Yaya Toure helped Manchester City stay in touch with Barclays Premier League leaders Manchester United by sealing a hard-fought win at Newcastle.
The reigning champions looked to be coasting to victory at St James' Park after Sergio Aguero and Garcia gave them a 2-0 lead before the break.
However, the Magpies launched a concerted fightback after Demba Ba dragged them back into the game with a 51st-minute header, his 11th goal of the season.
Papiss Cisse came agonisingly close to rescuing a point in front of a raucous crowd of 49,579, but the visitors - who did not have striker Mario Balotelli among their ranks after manager Roberto Mancini left him out of the 18 - eased over the line when Toure restored their two-goal advantage 12 minutes from time.
Newcastle boss Alan Pardew was left to reflect upon a sixth defeat in seven league matches, but buoyed by a performance of real character against a team which at times threatened to rip them apart.
Deprived of the threat of mercurial Frenchman Hatem Ben Arfa, Pardew beefed up his midfield by introducing the more defensively-minded James Perch.
The Magpies enjoyed the better of the possession in the first 10 minutes and might have been ahead had Joe Hart not got down smartly to turn away Cisse's early half-volley from Cheick Tiote's cross.
However, roused from their slumbers, City responded to assume the appearance of a team assembled on a budget of hundreds of millions of pounds playing against another assembled on a budget.
The pace and movement of Samir Nasri, David Silva, Carlos Tevez and Aguero, coupled with the vision of the imperious Toure, was simply too much for Newcastle to handle at times and had it not been for the efforts of goalkeeper Tim Krul and some less than effective finishing, the game could have been out of their reach long before the half-time whistle sounded.
City took the lead in breathtakingly simple, but magnificently constructed style with 10 minutes gone when a Toure pass split the home defence and Nasri unselfishly squared for Aguero to slide the ball into the empty net.
In an instant, the flow of the game had changed and Pardew's men found themselves chasing shadows.
Tevez was denied a second three minutes later by Krul's point-blank save and Nasri fired against the foot of the post after 20 minutes before Mike Williamson blocked Aguero's follow-up on the line.
Newcastle rallied with Williamson forcing another good save from Hart with a left-foot volley after central defensive partner Fabricio Coloccini had headed upfield, before Cisse fired over from long range 13 minutes before the break.
City doubled their lead with six minutes of the half remaining. This time, City adopted a far more prosaic approach as Javi Garcia met Silva's left-wing corner with a header which full-back Davide Santon perhaps should have cleared at the far post, but could only hack into his own net.
To their credit, Newcastle returned determined not to capitulate, and went close twice within four minutes of the restart with Ba heading over at the far post and Santon drilling a low drive into the side-netting.
They got their reward with 51 minutes gone when, after Vurnon Anita's corner had been half-cleared, Coloccini hooked the ball back into the penalty area where Ba beat the offside trap to head firmly past Hart.
The Magpies came within inches of levelling two minutes later when Cisse span on Anita's pass and fired inches over, but it took another crucial save by Krul to keep their hopes alive after Tevez had been played in over the top with 57 minutes gone.
Ba stabbed the ball into the side-netting from the last of a series of right-wing Anita corners with City's composure eluding them for once, and then prompted Hart to make a solid save with a rasping drive from distance.
However, City made sure 12 minutes from time when Pablo Zabaleta got in down the left and crossed for Toure to make it 3-1.
Aguero might have extended City's lead considerably as time ran down, curling a shot just wide and then chipping harmlessly across goal after racing from halfway, but the damage had already been done.