Second-best for 45 minutes as a subdued home support took stock of their side's Champions League troubles, City improved after half-time and took the points thanks to a Carlos Tevez goal (61).
The Argentine's first in nine games delivered just a second win in five home games, and the impression remains that Roberto Mancini's champions are some way from hitting last season's stride despite sitting just a point off top spot.
And there was further discomfort for the manager when Micah Richards followed Swansea goalkeeper Michel Vorm in departing on a stretcher with what appeared a serious injury.
Mancini went with four at the back after his brief flirtation with three centre-backs at Ajax brought a baffled response, but City's defenders looked ill-at-ease even in their favoured 4-4-2 formation.
The visitors made the better chances, and only some uncharacteristically hesitant finishing from Michu prevented the home side paying for the kind of careless defending which characterised the midweek defeat in Holland.
Twice before the break Richards got round from right-back in the nick of time to cover his wayward colleagues, and twice more Michu found it all too easy to latch on to through balls from midfield.
Sadly for the Spaniard his emphatic finish past Joe Hart was ruled out for offside, and when Ki Sung-Yueng sent him away again a heavy touch allowed Hart to intervene.
Swansea had not kept a clean sheet since the season's second weekend, but it took City 38 minutes to muster anything like a shot on target and even then Tevez's low effort was easy for Vorm.
Michu again picked out Hart with a headed chance after the break, but Mancini's half-time rocket had an effect and Tevez's next attempt was altogether more successful as his dipping 20-yarder defeated Vorm's dive.
The keeper's awkward landing ended his involvement, and Richards then went down clutching his knee - worryingly, with no opponent in the vicinity.
Lengthy treatment for both left Swansea 12 minutes to find an equaliser at the end of the Premier League's longest game, but it was Mario Balotelli who came closest to a second goal with the last kick.