In a frantic ending Erling Haaland did what he does best, claiming the winner in added time from the spot to give the champions a classic fighting win despite playing nearly 65 minutes with 10 men.
The winner came after Kevin De Bruyne drew Antonee Robinson into a foul that led to the penalty: while the decision seemed marginal, this was the peerless Norwegian’s 23rd goal of the season, going in underneath Bernd Leno’s body.
Haaland, on as substitute after the hour, had earlier appeared to be City’s hero when heading in a De Bruyne cross on 75 minutes. But the No 9 was adjudged offside by the VAR – correctly – and Fulham escaped, though Robert Jones failed to have the same fortune regarding Pep Guardiola who, unhappy since before the interval, gave the fourth official a latest flea in his ear about some perceived injustice.
City had been irritable and dislocated since João Cancelo’s first-half sending off, though the defender can have no complaints at this and the penalty awarded by the referee, Darren England, which seemed to have City dropping points for the first time since losing at Liverpool last month. Guardiola’s disenchantment at how Cancelo barged Harry Wilson over in the area moved him to a scolding of the No 7 as the left-back wandered off, Andreas Pereira’s successful kick cancelling out Julián Álvarez’s earlier score.
This all came before the break. With 27 minutes remaining and despite being the man down, Guardiola chased victory by bringing on Haaland and Phil Foden. From this juncture his side dominated: before the disallowed goal Haaland missed a gilded chance when Ilkay Gundogan cushioned a header to him, the Norwegian’s right foot connecting with air only.
The hosts, via Gundogan and De Bruyne, continued to poke the ball around Fulham in search of the winner – Haaland a particular menace. De Bruyne skipped down the left and lifted a delivery into the sky that had the No 9 launching himself, before Foden did the same when Gundogan lobbed the ball at him: each time City were inches away.
But deep into the five added minutes and appearing to rue the dismissal that gave Marco Silva’s visitors a lifeline, Haaland struck.