Manchester City fell seven points behind Liverpool in the Premier League title race as Ricardo Pereira's late stunner gave Leicester a 2-1 victory at the King Power Stadium.
The Portuguese defender fired brilliantly into the far corner from 20 yards from a cleared corner, meaning City have picked up just three points from their last four games.
They did take the lead through Bernardo Silva's seventh of the season after Sergio Aguero's deft pass (14), but Leicester levelled shortly after through Marc Albrighton's controlled header from Jamie Vardy's pinpoint delivery (19).
Then came Pereira's strike (81), before Fabian Delph was sent off for a studs-up challenge on Pereira (89), and with Liverpool beating Newcastle 4-0 and Tottenham defeating Bournemouth 5-0, the champions fell to third in the table. Leicester, meanwhile, are up to seventh.
Pep Guardiola's side were looking to bounce back following a 3-2 defeat by Crystal Palace on Saturday, and seemed to revert to type as Silva put them ahead. Aymeric Laporte fizzed a ball into Aguero in a central position, and his threaded pass allowed Silva to tuck past Kasper Schmeichel from 10 yards.
But Leicester levelled just five minutes later with a fine move of their own as Vardy looked up on the left to curl a cross for Albrighton at the far post to head back where it came from and into the left corner.
There was a flurry of chances late in the half; Aguero hooked over from close range, Vardy saw a one-on-one effort blocked at his feet by Ederson after Danilo's wild backpass, before Hamza Choudhury's effort at the far post was just touched away to safety by the goalkeeper.
Manchester City had 68 per cent of possession in the second half but failed to create many clear-cut chances, as the Leicester defence and Harry Maguire, in particular, held firm superbly.
That gave the hosts the platform to break, and after Leroy Sane had cleared Albrighton's corner, Pereira hit a fierce first-time effort into the left corner through a crowd of players and past Ederson's grasp for the winner.
Manchester City pushed for a leveller, but their task was made harder as Delph's torrid day was rounded off by a late red, winning the ball in a challenge with Pereira, but leaving his studs in the defender's ankle.
The managers
Claude Puel: "I think we deserve the result, because I think we get more chances than City. It's a fantastic result for the team, a good reward for the mentality and togetherness since the beginning of the season."
Pep Guardiola: "The reality is there are two or three teams better than us, so they are better. We're not talking about whether we can take Liverpool or get to Liverpool or whatever, the issue is about winning another game, and thinking in ourselves about how we can improve."
Opta stats
- This is the first time Man City have lost consecutive Premier League games since December 2016, with the second defeat in that run also coming away against Leicester.
- Leicester have won their last two Premier League games against 'big six' opposition, as many as they had in their previous 19 in the competition (W2 D2 L15).
- Manchester City have conceded a goal from their first shot faced in three of their last four Premier League matches (vs Chelsea, Crystal Palace and Leicester).
- Six of Guardiola's 11 Premier League defeats have come in the month of December.
- Man City's Bernardo Silva has had a hand in nine goals in his 18 Premier League appearances this season (5 goals, 4 assists), just one fewer than in his 35 games in the competition last term (6 goals, 4 assists).
- With Ricardo Pereira scoring for Leicester, and Bernardo Silva netting for Man City, this was the first time a Premier League match saw a Portuguese player score for both sides.
Man of the match - Harry Maguire
Leicester needed a mammoth defensive performance if they were to get a result against the champions, and they got it. It was all led by this man.
He made a whopping 16 clearances, double any other player on the pitch, and won 86 per cent of his duels.
What's next?
City now go to Southampton on Super Sunday at 2.15pm, live on Sky Sports Premier League, while Leicester host Cardiff on Saturday at 3pm in the Premier League.