Jamie Vardy's dinked finish gave the visitors the lead, but goals from Riyad Mahrez, Ilkay Gundogan and Gabriel Jesus sealed a fine win for Pep Guardiola's side.
The game’s first major chance fell to Kevin De Bruyne, whose powerful shot from the edge of the box struck the outside of the post.
It was a sign of things to come, with City in complete control of the early stages.
Moments later Gabriel Jesus almost scored from close range after Riyad Mahrez’s brilliance down the right had seen him take three Leicester defenders out of the game – but Kasper Schmeichel got down quickly to make a fine save.
However, Leicester remained a huge threat on the counter and in Vardy they have a significant weapon in behind. One pass – played by Harvey Barnes – beat a high City backline, Vardy raced clear and dinked the ball over the onrushing Ederson.
A fine goal against the run of play.
City were deservedly level when Mahrez, who had been brilliant from the off, cut in from the right and released a shot from distance that deflected off Caglar Soyuncu to wrong-foot Schmeichel.
And just before half-time we were ahead when Sterling won a penalty after being brought down inside the area by Ricardo Pereira. Ilkay Gundogan dispatched it superbly, low to Schmeichel’s left, and we finally had the lead we deserved.
The second half saw much the same pattern of play, and Mahrez almost extended our lead on two occasions, but his left-footed volley flew just wide of the upright and his curling effort was saved brilliantly by the Foxes 'keeper.
We were being frustrated in our bid for a third, but the brilliance of De Bruyne saw us get it. He picked up the ball, skinned Soyuncu and played a perfect pass to the back post for Jesus to tap home.
It then became the Kevin De Bruyne Show, with the Belgian orchestrating all of our best moments. He himself could have scored, but his effort flew over the bar.
A fine performance from City, who are now just a point behind Leicester who sit second.
🤟🏾 team work pic.twitter.com/hweynEW238— Raheem Sterling (@sterling7) December 21, 2019
Man of the Match: Kevin De Bruyne
De Bruyne's influence on this side cannot be underestimated. Every time he gets the ball, something significant happens.
The crowd sang his name on a loop in the second-half, such was his contribution to this win. He drives City forward, plays inch-perfect balls into the box and has the best range of passing in the Premier League.
He is the complete midfielder.
A special mention, too, for Mahrez who was a constant threat throughout. His quick feet bamboozle defenders, and his direct style offers City a different kind of threat.
De Bruyne has now registered 10 assists in the Premier League this season - three more than any other player.
He has been directly involved in 20 goals in the Premier League in 2019 (seven goals and 13 assists), the most of any midfielder this year.
⭐️ Man of the Match, @ManCity’s Kevin De Bruyne— Sky Sports Statto (@SkySportsStatto) December 21, 2019
4 shots, 2 on target
34 passes, 8 played into opposition area
7 chances created (3rd time he has created 7+ in a PL game this season
10th assist this season, 3 more than any player pic.twitter.com/GZJs6A6msg
What it means
City have closed the gap on second-placed Leicester to a single point. That will please Guardiola, who recently challenged his side to reel the Foxes in before even thinking about trying to catch runaway leaders Liverpool.
The Merseysiders, whose match against West Ham was postponed due to Club World Cup involvement, remain 10-points clear at the top with a game in hand.
In a period of six games in 18 days, it’s two down four to go.
Next up, a double-header in less than 48 hours: Wolves away, which is certainly no easy task, followed by the visit of Sheffield United on December 29.
The team selections for those two are likely to be vastly different as Guardiola looks to utilise his resources as wisely as possible. It’s a challenging – some would say gruelling – schedule, but, in the words of the boss, “it is what it is”.