Manchester City beat Fulham to return to the top of the Premier League as Erling Haaland scored his 50th goal of the season in all competitions.
Haaland converted a third-minute penalty, after Julian Alvarez had been fouled by Tim Ream, to become the first top-flight player to reach a half-century of goals in one campaign since Tom 'Pongo' Waring did so for Aston Villa in 1931.
The Norwegian striker also moved level for most goals in a Premier League season - matching the 34 goals Andy Cole scored for Newcastle in 1993-94 and the same amount Alan Shearer registered for Blackburn a year later.
However, Fulham grabbed a 15th-minute equaliser with their first attempt of the match as Carlos Vinicius powerfully shot past Ederson after Harry Wilson had headed the ball into his path.
But the hosts could not hang on to record a remarkable result.
Jack Grealish had an effort pushed on to the crossbar for Manchester City, who regained their lead in the 36th minute through Alvarez's superb strike from 25 yards out.
City's win moves them above and one point clear of Arsenal, with Pep Guardiola's side having a game in hand.
This was the first time City have been above Arsenal since mid-February as they aim to win the Premier League, Champions League and FA Cup treble.
Relentless City hunt another league title
This was City's first match since the 4-1 win over Arsenal on Wednesday, which left them in control of the title race as they aim to become English champions for the fifth time in six seasons.
They were without influential midfielder Kevin de Bruyne, who Guardiola said "was not feeling good", with Bernardo Silva dropping to the bench while Riyad Mahrez and Alvarez were brought into the side.
Alvarez made an instant impact as he was fouled by Ream's clumsy knee-high challenge to earn City a penalty, which Haaland scored for his 18th goal in his past 12 matches.
Argentine striker Alvarez, who helped his country win the World Cup in December, grabbed his eighth Premier League goal of the season with a superb strike to restore City's lead.
They had further chances as both Haaland and Alvarez were denied by smart low stops by Bernd Leno, with Fulham unable to grab an equaliser despite late pressure.
Guardiola's side, unbeaten in 18 games in all competitions and without a loss since 5 February, have six Premier League games left and need to win five of them to retain their title.
Their next matches are at home to struggling West Ham and Leeds on 3 and 6 May respectively, before the first leg of the Champions League semi-final against Real Madrid in Spain on 9 May.
Fulham's injury problems mount as season runs out of steam
Fulham won the Championship last season and were sixth in mid-February, dreaming of qualifying for Europe, before a run of five losses in seven matches before this match at Craven Cottage ended those hopes.
Marco Silva's side are 10th and aiming for their first top-10 finish in the top flight since 2011-12. They were only behind for 12 minutes following Haaland's penalty, before Vinicius equalised against the run of play.
Carlos Vinicius scored his third goal in the Premier League this seasonBut the Cottagers ended up being beaten again as their season looks to be ending on a tame note.
Fulham were still without striker Aleksandar Mitrovic, who is serving an eight-match ban for pushing a referee in the FA Cup quarter-final loss to Manchester United in March, with Willian also missing after he injured his hamstring in the warm-up before Tuesday's 1-0 loss at Aston Villa.
Silva's team suffered another injury blow after only 22 minutes as captain Ream went off with an arm injury, replaced by Issa Diop.
There was a further setback for Fulham when midfielder Andreas Pereira had to be carried off on a stretcher in the second half following an accidental clash with City defender Manuel Akanji.
Vinicius had a chance to grab an equaliser in the middle of the second half but City goalkeeper Ederson recovered just in time as the striker tried to take the ball around his fellow Brazilian.
Player of the match
HaalandErling Haaland
Fulham
Squad number8Player nameWilson
Squad number30Player nameCarlos Vinícius
Squad number26Player nameJoão Palhinha
Squad number18Player nameAndreas Pereira
Squad number14Player nameDe Cordova-Reid
Squad number10Player nameCairney
Squad number33Player nameRobinson
Squad number17Player nameLeno
Squad number13Player nameReam
Squad number4Player nameTosin
Squad number2Player nameTete
Squad number6Player nameReed
Squad number11Player nameSolomon
Squad number21Player nameJames
Squad number31Player nameDiop
Squad number28Player nameLukic
Line-ups
Fulham
Formation 4-2-3-1
17Leno
2Tete4Tosin13Ream33Robinson
6Reed26João Palhinha
8Wilson18Pereira14De Cordova-Reid
30Alves Morais
17Leno2TeteBooked at 70mins4Tosin13ReamSubstituted forDiopat 22'minutes33Robinson6ReedSubstituted forLukicat 76'minutes26João Palhinha8WilsonSubstituted forSolomonat 76'minutes18PereiraSubstituted forCairneyat 58'minutes14De Cordova-ReidSubstituted forJamesat 76'minutes30Alves MoraisSubstitutes
1Rodák5Duffy7Kebano10Cairney11Solomon12Cédric Soares21James28Lukic31DiopMan City
Formation 3-2-4-1
31Ederson
2Walker3Rúben Dias25Akanji
5Stones16Rodri
26Mahrez19Álvarez8Gündogan10Grealish
9Haaland
31EdersonBooked at 90mins25Akanji2WalkerBooked at 90mins3Rúben Dias16Rodri19ÁlvarezSubstituted forBernardo Silvaat 83'minutes8Gündogan5Stones9Haaland26MahrezSubstituted forFodenat 83'minutes10GrealishBooked at 70minsSubstitutes
4Phillips14Laporte18Ortega20Bernardo Silva21Gómez32Perrone33Carson47Foden82LewisLive Text
Match ends, Fulham 1, Manchester City 2.
Second Half ends, Fulham 1, Manchester City 2.
Corner, Manchester City. Conceded by Antonee Robinson.
Kyle Walker (Manchester City) is shown the yellow card.
Jack Grealish (Manchester City) wins a free kick in the defensive half.
Foul by Sasa Lukic (Fulham).
Foul by Erling Haaland (Manchester City).
Kenny Tete (Fulham) wins a free kick in the defensive half.
Ederson (Manchester City) is shown the yellow card.
Offside, Fulham. Kenny Tete tries a through ball, but Dan James is caught offside.
Foul by Jack Grealish (Manchester City).
Kenny Tete (Fulham) wins a free kick in the defensive half.
Bernardo Silva (Manchester City) wins a free kick in the defensive half.
Foul by Sasa Lukic (Fulham).
Bernardo Silva (Manchester City) wins a free kick in the defensive half.
Foul by Kenny Tete (Fulham).
Foul by Kyle Walker (Manchester City).
Tom Cairney (Fulham) wins a free kick in the defensive half.
Foul by Rodri (Manchester City).
Carlos Vinícius (Fulham) wins a free kick in the defensive half.
Our coverage of your Premier League club is bigger and better than ever before - here's everything you need to know to make sure you never miss a moment