The visiting Black Cats started the brighter of the two sides and created the first chance of the match when Stephane Sessegnon found Craig Gardner inside the area. The former Aston Villa midfielder was unable to keep his effort on target though, shooting into the side netting.
Sunderland continued to dominate the encounter and their pressure was rewarded in the 31st minute. Sessegnon squared for Larsson, who sent the ball past Joe Hart from 18 yards out.
However, Nicklas Bendtner ensured that the away side would take the lead into the break when he headed in a cross from Sessegnon.
City came out for the second half with a more positive outlook, but they were unable to find a route past Simon Mignolet in the Sunderland goal.
Their failure to draw level was punished in the 54th minute when Larsson claimed his second of the afternoon, rounding off a break-away move.
Carlos Tevez came off the bench as City looked for a route back into the fixture and the Argentine had the chance to pull a goal back soon after. However, the striker could only drill his effort into the side netting.
Just as it looked as though City would slump to their first home defeat of the season, Balotelli claimed his brace when he struck into the roof of the net in the 85th minute.
Then, barely a minute later, full-back Kolarov collected possession just outside the area and he struck a fierce shot past Mignolet.
City now trail leaders and rivals Manchester United by two points, having played a game more.