Erling Haaland was frustrated for long periods against his former team-mates
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 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 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.
-- Courtesy of BBC Sport