Erling Haaland's magnificent strike capped a dramatic Manchester City comeback and condemned former club Borussia Dortmund to a painful Champions League defeat at Etihad Stadium.
City struggled against a composed Dortmund, who took the lead when the outstanding Jude Bellingham glanced home Marco Reus' cross after 56 minutes.
Pep Guardiola's side toiled in search of inspiration and found the equaliser with 10 minutes left when defender John Stones fired a powerful shot past Dortmund keeper Alexander Meyer.
Inevitably, it was left to Haaland to produce a truly special moment four minutes later, showing outstanding athleticism to soar through the air and score from Joao Cancelo's cross.
Haaland's moment of magic
Haaland had been kept relatively quiet by his former Dortmund team-mates but this special striker still made the defining, spectacular contribution as City came from behind to win.
The young Norwegian was on the margins of the game but had posted a warning with a shot that struck the outside of the post minutes before scoring.
Stones' equaliser, struck with plenty of force but met with little obstruction from the strangely static keeper Meyer, shifted the emphasis of a game in which Dortmund's calm defence, marshalled by the veteran Mats Hummels and with Bellingham pulling the strings in midfield, left City frustrated.
City suddenly sensed a winner but it was still something special when Haaland took off into the air to meet Cancelo's cross with his outstretched left foot to divert the ball past a disbelieving Meyer.
It brought a broad smile to the face of his father, former City midfield man Alf-Inge, watching in the stands. He re-enacted the moment but, understandably, without his son's elasticity and elegance.
Haaland's goal was his 13th of the season and his 26th in 21 Champions League games.
City's fans rejoiced as this was exactly the sort of moment the 22-year-old was signed for, to decide big Champions League games that looked to be getting away from them.
It means City now have a maximum return from two games and a striker every team in the competition will fear.
Bellingham's show of class
Bellingham embraced his former Dortmund team-mate Haaland, the pain of defeat mixed with a resigned smile at the world-class goal that undid so much good work by the Bundesliga side.
It was mutual admiration as Haaland will have appreciated the sheer class of the 19-year-old England midfielder, who was the game's most significant presence until City launched that late turnaround.
Bellingham demonstrates a maturity beyond his years with the perfect range of passing, composure and also an eye for a goal as he reacted quicker than City's defenders to divert Reus' cross past Ederson.
Gareth Southgate names his next England squad on Thursday. Bellingham is now producing a growing body of evidence to suggest he must be a starter ahead of Kalvin Phillips, who has barely played since moving to City from Leeds United.
And he was certainly more impressive than the disappointing Jack Grealish, who could have had no complaints when he was substituted as City manager Guardiola tried to get his side back into the game after Dortmund took the lead.
Player of the match
BellinghamJude Bellingham
Borussia Dortmund
Squad number22Player nameBellingham
Squad number11Player nameReus
Squad number15Player nameHummels
Squad number7Player nameReyna
Squad number25Player nameSüle
Squad number13Player nameRaphaël Guerreiro
Squad number21Player nameMalen
Squad number23Player nameCan
Squad number6Player nameÖzcan
Squad number24Player nameMeunier
Squad number20Player nameModeste
Squad number33Player nameMeyer
Squad number4Player nameSchlotterbeck
Squad number27Player nameAdeyemi
Squad number18Player nameMoukoko
Line-ups
Man City
Formation 4-3-3
31Ederson
5Stones25Akanji6Aké7Cancelo
17De Bruyne16Rodri8Gündogan
26Mahrez9Haaland10Grealish
31Ederson5Stones25Akanji6Aké7Cancelo17De Bruyne16RodriBooked at 53mins8GündoganSubstituted forBernardo Silvaat 58'minutes26MahrezSubstituted forÁlvarezat 58'minutes9HaalandSubstituted forPhillipsat 90+2'minutes10GrealishSubstituted forFodenat 58'minutesBooked at 90minsSubstitutes
3Rúben Dias4Phillips18Ortega19Álvarez20Bernardo Silva21Gómez33Carson47Foden80Palmer82Lewis97Wilson-EsbrandB Dortmund
Formation 4-3-3
33Meyer
24Meunier25Süle15Hummels13Guerreiro
22Bellingham23Can6Özcan
7Reyna20Modeste11Reus
33Meyer24MeunierBooked at 90mins25Süle15Hummels13Guerreiro22Bellingham23Can6ÖzcanBooked at 88minsSubstituted forAdeyemiat 88'minutes7ReynaSubstituted forMalenat 62'minutesBooked at 79mins20ModesteSubstituted forSchlotterbeckat 78'minutes11ReusSubstituted forMoukokoat 88'minutesSubstitutes
4Schlotterbeck10T Hazard17Wolf18Moukoko19Brandt21Malen27Adeyemi30Passlack36Rothe38Unbehaun44CoulibalyLive Text
Match ends, Manchester City 2, Borussia Dortmund 1.
Second Half ends, Manchester City 2, Borussia Dortmund 1.
Thomas Meunier (Borussia Dortmund) is shown the yellow card.
Phil Foden (Manchester City) is shown the yellow card for a bad foul.
Foul by Phil Foden (Manchester City).
Thomas Meunier (Borussia Dortmund) wins a free kick in the defensive half.
Attempt missed. Donyell Malen (Borussia Dortmund) right footed shot from the left side of the box is close, but misses to the left. Assisted by Raphaël Guerreiro.
Substitution, Manchester City. Kalvin Phillips replaces Erling Haaland.
Attempt blocked. Julián Álvarez (Manchester City) left footed shot from the centre of the box is blocked. Assisted by Erling Haaland.
Attempt saved. Julián Álvarez (Manchester City) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by John Stones.
Substitution, Borussia Dortmund. Karim Adeyemi replaces Salih Özcan.
Substitution, Borussia Dortmund. Youssoufa Moukoko replaces Marco Reus.
Salih Özcan (Borussia Dortmund) is shown the yellow card for a bad foul.
Attempt missed. Thomas Meunier (Borussia Dortmund) right footed shot from the right side of the box is close, but misses to the right. Assisted by Marco Reus.
Goal! Manchester City 2, Borussia Dortmund 1. Erling Haaland (Manchester City) left footed shot from very close range to the high centre of the goal. Assisted by João Cancelo with a through ball.
Attempt blocked. Rodri (Manchester City) right footed shot from outside the box is blocked. Assisted by João Cancelo.
Goal! Manchester City 1, Borussia Dortmund 1. John Stones (Manchester City) right footed shot from outside the box to the high centre of the goal. Assisted by Kevin De Bruyne.
Donyell Malen (Borussia Dortmund) is shown the yellow card.
Manuel Akanji (Manchester City) wins a free kick in the defensive half.
Foul by Donyell Malen (Borussia Dortmund).