Substitute Erling Haaland scored an injury-time winner from the penalty spot to give 10-man Manchester City victory over Fulham and send the defending champions top of the table.
The importance of his 95th-minute strike was underlined moments later when Haaland was embraced by his manager Pep Guardiola at the final whistle, and joined his team-mates on a lap of honour.
What appeared as though it would be a frustrating and potentially costly afternoon in City’s pursuit of a third-successive title, instead ended with a memorable victory thanks to Haaland’s 18th league goal of his dazzling start to his career at Etihad Stadium.
All seemed to be going according to plan for Guardiola’s side early on, as they took the lead through Julian Alvarez’s powerful finish and pressed forward looking for more goals.
But the anticipated march to a seventh successive home win this season did not transpire. Instead the game took an unexpected turn just before the the half-hour mark when Joao Cancelo muscled Fulham forward Harry Wilson off the ball in the box.
Referee Darren England pointed to the spot and showed Cancelo the red card, to the disbelief of Guardiola and his players, before Andreas Pereira sent Ederson the wrong way from the spot.
That was Fulham’s first effort at goal and they rarely threatened afterwards either, even with the extra man, instead being content to sit deep and frustrate their hosts.
It initially appeared they would be successful, even when Haaland came off the bench in the second half after two games out injured.
Haaland thought he had scored the winner when he headed home a Kevin de Bruyne cross with 15 minutes to go, but the home side’s celebrations were cut short when VAR showed he was offside.
City’s attacks grew increasingly frantic towards the end and Haaland got no closer to finding the net, until Antonee Robinson tripped De Bruyne inside the area in injury time.
Haaland – who else? – stepped up to fire his penalty into the bottom corner and spark wild celebrations from his team-mates, manager and in the stands.
Haaland comes off the bench to save the day
City have now won all seven of their home league games this season, but they have never left it as late as this to secure victory.
Their frustration at the way this game was panning out was demonstrated by Bernardo Silva’s outburst at England before half-time when the referee failed to book Wilson for a foul – which earned Silva a booking instead.
The clamour for Haaland’s introduction grew as the second half went on, with City dominating possession but failing to find a way through Fulham’s massed defence.
Haaland and Phil Foden were both introduced on their rescue mission in the 63rd minute but it appeared they would find it just as difficult to make the breakthrough.
Haaland’s first effort was an air-shot as he completely missed Ilkay Gundogan’s knockdown and his second flew a mile wide, although in his defence he was at full stretch to reach a John Stones cross at the far post.
His disallowed goal appeared likely to be a part of the story of two points dropped for his side, but City kept coming forward and finally got their reward right at the end of the game.
More to follow.
Player of the match
Andreas PereiraAndreas Pereira
Squad number18Player nameAndreas Pereira
Squad number8Player nameWilson
Squad number26Player nameJoão Palhinha
Squad number17Player nameLeno
Squad number6Player nameReed
Squad number20Player nameWillian
Squad number30Player nameCarlos Vinícius
Squad number31Player nameDiop
Squad number13Player nameReam
Squad number2Player nameTete
Squad number33Player nameRobinson
Squad number10Player nameCairney
Squad number21Player nameJames
Squad number27Player nameMbabu
Squad number38Player nameHarris
- 7CanceloBooked at 26mins
- 17De Bruyne
- 8GündoganSubstituted forRúben Diasat 90+7′minutes
- 20Bernardo SilvaBooked at 45mins
- 19ÁlvarezSubstituted forHaalandat 64′minutesBooked at 90mins
- 10GrealishSubstituted forFodenat 64′minutes
- 3Rúben Dias
- 2TeteBooked at 63mins
- 33RobinsonBooked at 90mins
- 6ReedBooked at 45mins
- 26João Palhinha
- 8WilsonSubstituted forJamesat 76′minutes
- 18PereiraBooked at 7minsSubstituted forHarrisat 88′minutes
- 20WillianSubstituted forMbabuat 80′minutes
- 30Alves MoraisSubstituted forCairneyat 76′minutes
Match ends, Manchester City 2, Fulham 1.
Second Half ends, Manchester City 2, Fulham 1.
Erling Haaland (Manchester City) wins a free kick in the defensive half.
Foul by Kenny Tete (Fulham).
Attempt blocked. Issa Diop (Fulham) header from the centre of the box is blocked. Assisted by Tom Cairney with a cross.
Erling Haaland (Manchester City) is shown the yellow card for excessive celebration.
Substitution, Manchester City. Rúben Dias replaces Ilkay Gündogan.
Goal! Manchester City 2, Fulham 1. Erling Haaland (Manchester City) converts the penalty with a left footed shot to the bottom left corner.
Penalty Manchester City. Kevin De Bruyne draws a foul in the penalty area.
Penalty conceded by Antonee Robinson (Fulham) after a foul in the penalty area.
Antonee Robinson (Fulham) is shown the yellow card for a bad foul.
Corner, Manchester City. Conceded by Tim Ream.
Attempt blocked. Erling Haaland (Manchester City) header from the centre of the box is blocked. Assisted by Kevin De Bruyne with a cross.
Substitution, Fulham. Luke Harris replaces Andreas Pereira.
Foul by Manuel Akanji (Manchester City).
Daniel James (Fulham) wins a free kick in the defensive half.
Attempt blocked. Erling Haaland (Manchester City) right footed shot from the left side of the box is blocked. Assisted by Kevin De Bruyne with a through ball.
Substitution, Fulham. Kevin Mbabu replaces Willian.
Substitution, Fulham. Tom Cairney replaces Carlos Vinícius.
Substitution, Fulham. Daniel James replaces Harry Wilson because of an injury.
- 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