The hosts should have taken the lead within 20 minutes when Carlos Tevez was brought down inside the penalty area. David Silva stepped up, but his spot kick was poor and comfortably saved by Kelvin Davis.
The champions did take the lead five minutes before the break when Tevez fired past Davis from close range, although replays suggested that the striker was offside.
The hosts continued to pour forward and squandered good chances through Gael Clichy and Silva, the latter of whom hit the crossbar with his effort.
Then, against the run of play, Southampton grabbed an equaliser through Rickie Lambert's low strike. Things got even better for the Saints with just over 20 minutes left as they took the lead through debutant Steven Davis.
City responded as only champions can, however, and pulled level through Dzeko with 15 minutes left on the clock and almost took the lead a minute later through Tevez.
Dzeko came close again before the hosts got the winner ten minutes from time through Nasri's strike after poor defending from Southampton.