Manchester City needed a second-half comeback to beat Luton Town at Kenilworth Road and end their four-match winless run in the Premier League.
Pep Guardiola's side were facing back-to-back league defeats for the first time since December 2019 when Elijah Adebayo gave Luton the lead in first-half stoppage time, rising highest at the back post to head in Andros Townsend's cross.
But Bernardo Silva latched on to a loose ball in the penalty area and equalised for the visitors with a fine curling effort.
Three minutes later City completed the turnaround when Jack Grealish converted Julian Alvarez's low cross.
Victory means the champions stay fourth, four points behind leaders Liverpool, while third-from-bottom Luton are now four points off safety following Everton's win over Chelsea.
How did you rate Luton's performance? Have your say hereWhat did you make of Manchester City's display? Send us your views hereCity record first league win in five weeks
City came into Sunday's fixture on the back of their joint-longest run without a win under Guardiola.
While key players Rodri and Grealish returned after missing Wednesday's loss to Aston Villa through suspension, leading scorer Erling Haaland was absent having picked up a foot injury in training.
'I don't know' - Guardiola on Haaland injury recovery timeAt half-time there was a real sense of jeopardy for City, who would have been seven points off Liverpool with a loss.
But in the second half, despite not having Haaland's imposing presence up front, City returned to their ruthless selves.
Just before their goals they hit the bar through Ruben Diaz's thunderous shot following Nathan Ake's cutback.
And once they took the lead they held Luton at arm's length to record their first league win since beating Bournemouth 6-1 on 4 November.
Luton slip further adrift
Luton have faced last season's top two in the space of five days and have taken the lead in both matches only to be stung by second-half comebacks.
It is a testament to how far the Hatters have risen up the football pyramid in recent seasons, and a bouncing Kenilworth Road was again witness to Luton going ahead against a powerhouse of English football.
However, outside of Adebayo's goal, the hosts were limited to half-chances. And, despite two promising performances, Rob Edwards' side have lost their past three matches and won only one of their past 10.
A gap is also re-emerging between the bottom three and the rest of the division. At half-time on Sunday Luton were a point above the relegation zone in the as-things-stand table.
But their loss, coupled with Everton's win, means Luton ended the day further adrift in the bottom three and in desperate need of points.
Player of the match
AdebayoElijah Adebayo
with an average of 7.64
Luton Town
Squad number11Player nameAdebayo
Squad number30Player nameTownsend
Squad number6Player nameBarkley
Squad number19Player nameBrown
Squad number26Player nameGiles
Squad number4Player nameLockyer
Squad number45Player nameDoughty
Squad number13Player nameNakamba
Squad number29Player nameBell
Squad number24Player nameKaminski
Squad number15Player nameMengi
Squad number9Player nameMorris
Squad number14Player nameChong
Squad number28Player nameSambi Lokonga
Squad number18Player nameClark
Manchester City
Squad number25Player nameAkanji
Squad number27Player nameMatheus Nunes
Squad number5Player nameStones
Squad number10Player nameGrealish
Squad number47Player nameFoden
Squad number19Player nameÁlvarez
Squad number20Player nameBernardo Silva
Squad number16Player nameRodri
Squad number6Player nameAké
Squad number31Player nameEderson
Squad number3Player nameRúben Dias
Squad number2Player nameWalker
Squad number24Player nameGvardiol
Squad number8Player nameKovacic
Line-ups
Luton
Formation 3-4-3
24Kaminski15Mengi4LockyerSubstituted forClarkat 90'minutes29Bell45DoughtyBooked at 77mins13NakambaBooked at 58minsSubstituted forSambi Lokongaat 72'minutes6Barkley26GilesSubstituted forChongat 84'minutes30TownsendSubstituted forMorrisat 72'minutes11Adebayo19BrownSubstitutes
5Andersen8Berry9Morris14Chong17Mpanzu18Clark23Krul28Sambi Lokonga38JohnsonMan City
Formation 4-2-3-1
31Ederson2Walker3Rúben Dias6Aké24GvardiolSubstituted forStonesat 69'minutes16RodriBooked at 73mins8KovacicSubstituted forNunesat 83'minutes20Bernardo Silva47FodenSubstituted forAkanjiat 90+3'minutes10Grealish19ÁlvarezSubstitutes
4Phillips5Stones18Ortega21Gómez25Akanji27Nunes33Carson52Bobb82LewisReferee:Tim Robinson
Attendance:11,047
Live Text
Match ends, Luton Town 1, Manchester City 2.
Second Half ends, Luton Town 1, Manchester City 2.
Corner, Luton Town. Conceded by Rodri.
Hand ball by Teden Mengi (Luton Town).
Foul by Rúben Dias (Manchester City).
Carlton Morris (Luton Town) wins a free kick in the defensive half.
Substitution, Manchester City. Manuel Akanji replaces Phil Foden.
Corner, Luton Town. Conceded by Rúben Dias.
Attempt missed. Tahith Chong (Luton Town) left footed shot from the centre of the box misses to the left following a corner.
Corner, Luton Town. Conceded by Nathan Aké.
Hand ball by Rúben Dias (Manchester City).
Substitution, Luton Town. Jordan Clark replaces Tom Lockyer.
Jack Grealish (Manchester City) wins a free kick on the left wing.
Foul by Teden Mengi (Luton Town).
Foul by Rodri (Manchester City).
Tahith Chong (Luton Town) wins a free kick on the left wing.
Offside, Luton Town. Elijah Adebayo is caught offside.
Substitution, Luton Town. Tahith Chong replaces Ryan Giles.
Substitution, Manchester City. Matheus Nunes replaces Mateo Kovacic.
Corner, Luton Town. Conceded by Bernardo Silva.