Meanwhile, chelsea were held by Red Bull Salzburg in their first game under new manager Graham Potter, as Rangers again lost heavily and Celtic drew with Shakhtar Donetsk.
In Manchester, Haaland faced the club he left at the end of the season for €60m ($60m, £52m) after a prolific two and a half years in the Bundesliga.
⏰ WEDNESDAY RESULTS ⏰ The Champions League is special. #UCL
— UEFA Champions League (@ChampionsLeague) 1663190760000
Still, it looked like Dortmund could pull off a surprise as they went ahead just before the hour mark at the Etihad Stadium when England midfielder Jude Bellingham headed in.
City’s equalizer only came when Kevin De Bruyne put John Stones in place with 10 minutes remaining, and Haaland claimed the winner in the 84th minute with an outrageous finish from Joao Cancelo’s magnificent cross.
Haaland now has 13 goals in nine games for City, who have won two from two in Group G.
“In the end, we showed what we were,” Haaland told BT Sport. “Dortmund was really good today (but) three points is what matters.”
City’s next two games will be against FC Copenhagen, who drew 0-0 with Seville in Denmark.
Haaland 😅#UCL https://t.co/epDZu5iFOE
— UEFA Champions League (@ChampionsLeague) 1663197803000
In London, Potter took charge of Chelsea for the first time but had to settle for a 1-1 draw with Salzburg in Group E, with Raheem Sterling’s opener early in the second half scrapped by Noah Okafor .
“It hasn’t been easy for the boys, they’ve responded very well to us over the past few days and that’s something we’ll have to take and improve on,” Potter told BT Sport.
Earlier, group rivals AC Milan beat Dinamo Zagreb 3-1 at the San Siro, with Olivier Giroud scoring a penalty before Alexis Saelemaekers and Tommaso Pobega added further goals for either side from a strike by Mislav Orsic for Dinamo.
Graham Potter’s reaction after tonight’s #UCL draw with Salzburg… 🎙
– Chelsea FC (@ChelseaFC) 1663197608000
Reigning European champions Madrid needed two late goals to beat RB Leipzig 2-0 at the Santiago Bernabeu and maintain their perfect start in Group F.
Federico Valverde opened the scoring 10 minutes from time after being set up by Vinicius Junior, and substitute Marco Asensio sealed the win with a terrific first in injury time.
Carlo Ancelotti’s side are clear top of the group against Shakhtar, who used their chance to earn a 1-1 draw with Celtic.
The Scottish champions took the lead early on when Reo Hatate’s ball in the penalty area entered Artem Bondarenko’s net.
👔 @MrAncelotti: “We played a very smart game.”#UCL https://t.co/8CmEOHgLuH
— Real Madrid CF 🇬🇧🇺🇸 (@realmadriden) 1663194000000
But Shakhtar, playing European games at home in Warsaw due to the war in Ukraine, equalized before the half-hour thanks to an emphatic finish from Mykhailo Mudryk.
Celtic had chances to win the match, none better than a late strike from Giorgos Giakoumakis that went terribly wide.
“We will have our rewards if we continue to play this kind of football and show this kind of commitment,” Celtic coach Ange Postecoglou said.
At least they have a point, unlike rivals Rangers who lost 3-0 at home to Napoli in Group A.
In a dramatic second half, Rangers had American defender James Sands sent off for conceding a penalty that Piotr Zielinski had saved, only for Matteo Politano to score the rebound.
However, the referee ordered a replay and Allan McGregor saved Zielinski again.
🔝📈⚽️ A goal, the MVP award and a record! @KMbappe equals Cavani’s record with his 3️⃣0️⃣th goal in the… https://t.co/zP9EVVW3z9
— Paris Saint Germain (@PSG_English) 1663193293000
Still, Napoli won another penalty midway through the second half, and this time Politano scored from the spot, before Giacomo Raspadori and Tanguy Ndombele added more goals.
The match had been postponed for 24 hours due to police issues relating to the death of Queen Elizabeth II, and Rangers ignored UEFA’s decision to reject their request to play Britain’s national anthem ahead of kickoff. ‘mail.
Paris Saint-Germain came from behind to beat Maccabi Haifa 3-1 in Israel as their three superstars all scored.
Surinamese international Tjaronn Chery gave the home side the lead only for Lionel Messi to equalize before the break.
Messi then set up Kylian Mbappe to make it 2-1 midway through the second half, and Neymar sealed a second win in as many Group H games for PSG.
Juventus, however, suffered a second defeat in a row, as they lost 2-1 at home to Benfica.
Arkadiusz Milik’s opener for Juve was canceled out by Joao Mario’s penalty, before David Neres struck in the winner for Benfica.