Manchester City extended their unbeaten run to 14 matches in all competitions with a hard-fought win over struggling Brighton.
Phil Foden grabbed the only goal just before half-time when he collected Kevin de Bruyne's pass, created space and fired into the bottom corner.
The hosts had chances to extend the lead, Riyad Mahrez shooting just wide, Ilkay Gundogan seeing an effort saved by Brighton goalkeeper Robert Sanchez and Bernardo Silva hitting the crossbar. Most culpably, Raheem Sterling sent an injury-time penalty over the bar after Sanchez had fouled De Bruyne.
Alexis Mac Allister had perhaps the Seagulls' best chance to equalise but shot over the top.
City's fourth straight win in the league moves them up to third, although they will drop back to fourth if Tottenham win at home against Fulham in the late game on Wednesday.
Brighton, meanwhile, have now not won in nine league matches and could find themselves in the bottom three if 18th-placed Fulham come out on top at Spurs.Relive Manchester City v Brighton as it happened and analysis
From the bottom half to title challengers
City have now not lost since 21 November when they were beaten 2-0 at Tottenham, a result that left Guardiola's side 11th in the Premier League.
However, their form has been superb since then with 11 wins and three draws in all competitions, and only three goals conceded in that period. Across league and cups, they have now won seven in a row.
What makes those statistics even more impressive is that Guardiola has repeatedly been without key players because of coronavirus, with goalkeeper Ederson, defender Kyle Walker and forwards Gabriel Jesus and Ferran Torres among those to have missed recent matches.
Against Brighton, City were missing striker Sergio Aguero, the Argentine self-isolating following contact with someone who tested positive for Covid-19. With Sterling, Jesus and Torres starting on the bench, De Bruyne operated as a makeshift centre-forward.
And the Belgium international was at the heart of City's best moves. He had a shot saved by Sanchez from a tight angle then released Mahrez, who could only shoot wide.
But just before half-time De Bruyne grabbed his ninth assist of the season when he slid a pass to Foden and the 20-year-old England midfielder did the rest, taking three touches to evade the Brighton defenders and then shooting past Sanchez.
Mahrez, Gundogan, Silva, Joao Cancelo and De Bruyne all had efforts inside the opening 20 minutes of the second half as City pushed for a second to kill the game off.
Sterling, who came on in the 82nd minute as a replacement for Foden, fired a penalty over in stoppage time after Sanchez's clumsy foul on De Bruyne.
City, champions in 2017-18 and 2018-19 and runners-up last time, are right back in contention. They are now only four points behind leaders Manchester United with a game in hand on their rivals.
Brighton lack cutting edge needed to get a point
Brighton, without a win in the Premier League since they beat Aston Villa 2-1 on 21 November, will be encouraged by their battling performance, but lacked the quality up front to get a point.
Graham Potter's side had to wait 40 minutes for their first corner, and then the delivery was poor and City quickly broke with De Bruyne forcing a fine save from Sanchez.
The Seagulls did not have a shot on target until 10 minutes into the second half and that was no trouble for Ederson as Davy Propper's strike was straight at him.
Percy Tau, making his Premier League debut more than two years after signing for Brighton, set up Mac Allister, who shot narrowly over.
Potter brought on top goalscorer Neal Maupay for Tau for the last 22 minutes, but the Frenchman could not inspire an equaliser.
More to follow.
How to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Squad number31Player nameEderson
Squad number27Player nameJoão Cancelo
Squad number5Player nameStones
Squad number3Player nameRúben Dias
Squad number11Player nameZinchenko
Squad number17Player nameDe Bruyne
Squad number16Player nameRodri
Squad number8Player nameGündogan
Squad number26Player nameMahrez
Squad number20Player nameBernardo Silva
Squad number47Player nameFoden
Squad number7Player nameSterling
Squad number9Player nameGabriel Jesus
Brighton & Hove Albion
Squad number26Player nameSánchez
Squad number4Player nameWebster
Squad number5Player nameDunk
Squad number33Player nameBurn
Squad number34Player nameVeltman
Squad number24Player namePröpper
Squad number3Player nameWhite
Squad number30Player nameBernardo
Squad number22Player nameTau
Squad number11Player nameTrossard
Squad number10Player nameMac Allister
Squad number9Player nameMaupay
Squad number20Player nameMarch
Squad number67Player nameKhadra
Formation 4-3-331Ederson27Cancelo5Stones3Rúben Dias11Zinchenko17De Bruyne16Rodri8Gündogan26MahrezSubstituted forGabriel Jesusat 67'minutes20Bernardo Silva47FodenSubstituted forSterlingat 82'minutes
Formation 3-4-2-126Sánchez4WebsterBooked at 77mins5Dunk33Burn34VeltmanBooked at 62mins24PröpperSubstituted forMarchat 68'minutes3White30Bernardo22TauSubstituted forMaupayat 68'minutes11TrossardSubstituted forKhadraat 86'minutes10Mac Allister
Match ends, Manchester City 1, Brighton and Hove Albion 0.
Second Half ends, Manchester City 1, Brighton and Hove Albion 0.
Foul by Raheem Sterling (Manchester City).
Solly March (Brighton and Hove Albion) wins a free kick on the right wing.
Penalty missed! Bad penalty by Raheem Sterling (Manchester City) right footed shot is just a bit too high. Raheem Sterling should be disappointed.
Penalty Manchester City. Kevin De Bruyne draws a foul in the penalty area.
Penalty conceded by Robert Sánchez (Brighton and Hove Albion) after a foul in the penalty area.
Corner, Brighton and Hove Albion. Conceded by John Stones.
Corner, Brighton and Hove Albion. Conceded by Bernardo Silva.
Substitution, Brighton and Hove Albion. Reda Khadra replaces Leandro Trossard.
Kevin De Bruyne (Manchester City) wins a free kick in the defensive half.
Foul by Joël Veltman (Brighton and Hove Albion).
Attempt blocked. Raheem Sterling (Manchester City) right footed shot from the left side of the box is blocked. Assisted by Kevin De Bruyne.
Substitution, Manchester City. Raheem Sterling replaces Phil Foden.
Ilkay Gündogan (Manchester City) wins a free kick in the defensive half.
Foul by Solly March (Brighton and Hove Albion).
Offside, Brighton and Hove Albion. Joël Veltman tries a through ball, but Dan Burn is caught offside.
Attempt blocked. Neal Maupay (Brighton and Hove Albion) left footed shot from outside the box is blocked. Assisted by Leandro Trossard.
Adam Webster (Brighton and Hove Albion) is shown the yellow card for a bad foul.
Bernardo Silva (Manchester City) wins a free kick in the defensive half.
Mark Wright joins Crawley Town: Can the TV personality make it as a pro footballer?The Serpent: New drama brings the chilling crimes of Charles Sobhraj to life