The champions were stung by a breakaway goal from Jamie Vardy but, with Kevin De Bruyne pulling the strings at Etihad Stadium, hit back in style to move back within a point of second-place Leicester.
Riyad Mahrez, impressive against his former club, struck a deflected equalizer and Ilkay Gundogan netted a penalty before De Bruyne teed up Gabriel Jesus for the third.
A week after scoring twice against Arsenal, De Bruyne was at his best again and hit the goal frame as well as forcing two good saves from Kasper Schmeichel before leaving the field with cramp in injury time.
City trimmed the gap to 11 points behind Liverpool, which was not in Premier League action this weekend owing to its involvement in the Club World Cup in Qatar, but the impressive nature of the victory suggests the team will still have a big say in the second half of the season.
Leicester did catch City on the break on occasions but, this time, the hosts dealt with that threat much better than they did against Manchester United in their previous home game, which they lost 2-1.
For City manager Pep Guardiola, it also ended a difficult week on a high after the loss of assistant coach Mikel Arteta to Arsenal.
Mahrez and De Bruyne shone throughout, with the former having a shot blocked before teeing up the latter for the game's first serious opportunity. The Belgian clipped a low effort against a post.
Mahrez then had another shot deflected before setting up Jesus for a close-range effort saved by Schmeichel.
Leicester threatened when Vardy broke clear down the right and pulled the ball back across goal but Harvey Barnes was unable to make contact.
City failed to heed that warning and was punished after 22 minutes when Barnes picked out Vardy with a fine throughball. Vardy raced past Fernandinho to take the ball into the box and he recovered from a heavy touch to lift his finish over Ederson.
Things could have got worse for City when Vardy weaved through the area again but this time he shot over.
The hosts needed to respond and did so in the 30th as Mahrez cut in from the right and found the net with a shot that took a wicked deflection off Caglar Soyuncu.
City went ahead two minutes before halftime after Raheem Sterling fell over Ricardo Pereira to win a penalty. Gundogan tucked away neatly from the spot but Ederson needed to push away a scuffed effort from James Maddison to ensure they took the lead into the break.
City started the second period well, with Sterling having a shot blocked and Mahrez putting a difficult half-volley wide. De Bruyne also broke into the area but Jesus failed to make the most of his pass.
Vardy got behind City's defense again to whip in a fine cross, but Barnes turned it wide under pressure from Ederson and was injured as he collided with the goalkeeper.
Mahrez tested Schmeichel with a fine strike from the edge of the box, but City was not to be denied for much longer. With 21 minutes to play, De Bruyne broke through the Leicester rearguard again and this time Jesus could not miss at the far post.
De Bruyne wanted more and had a good strike tipped over the bar by Schmeichel as City won with something of its old swagger.