Phil Foden gave Manchester City a slender 2-1 Champions League quarter-final advantage over Borussia Dortmund after Marco Reus snatched an away goal in a frantic finish at the Etihad Stadium.
Kevin De Bruyne started and finished a rapid move to put City ahead in the 19th minute, but Dortmund were unfortunate to be behind at half-time after referee Ovidiu Hategan inexplicably penalised Jude Bellingham for a fair challenge on Ederson.
City belatedly hit their stride in the final quarter of the game, although Foden looked like being the villain as he missed two golden opportunities before Bellingham and Erling Haaland combined for Reus to coolly equalise six minutes from time.
Fortunately for the home team, England youngster Foden kept a cool head when Ilkay Gundogan knocked down De Bruyne's majestic cross in the 90th minute, firing into the right corner.
The hosts' opener came against the run of play, De Bruyne driving the attack from midfield and feeding Foden before applying the finish from Riyad Mahrez's cutback.
City had a penalty award overturned when a VAR review showed Emre Can had not impeded Rodri with a high boot – on the contrary he caught the Spain international's thigh - and Dortmund were once again perplexed by a decision from Hategan seven minutes before half-time.
Bellingham charged forward from midfield and caught Ederson in possession, only for the Romanian official to harshly blow for a foul before the England youngster rolled the ball into an unguarded net.
After being the beneficiary of that colossal let-off, Ederson bailed out his team early in the second period. Springing into action after a quiet first half, Haaland raced onto Mahmoud Dahoud's throughball and bulldozed Ruben Dias to the ground.
Ederson stood firm to prevail in the one-on-one and City then started to find their feet, with De Bruyne and Foden to the fore. De Bruyne darted in behind Mats Hummels to cross for Foden, who was denied from point-blank range by goalkeeper Marwin Hitz.
The effervescent Foden again sliced the Bundesliga team's defence to ribbons with his dribbling prowess in the 80th minute, but his finish was not up to the same standard Reus showed after smart interplay from Bellingham and Haaland.
Reus clipped beyond Ederson on a ground where he scored in a 1-1 draw in 2012. Foden, a City fan and occasional ballboy back then, ensured it would not be the same scoreline this time around.
What does it mean? City's Champions League jitters resurface
Guardiola's men headed into the game having won 26 of their last 27 matches, yet this is the round of the competition where they have fallen in each of the past three seasons. This display had more in common with the odd game out in that number, an error-strewn derby defeat to Manchester United.
The authority with which the Premier League leaders dispatched Leicester at the weekend was largely absent. Although he will be glad to finally enter a quarter-final second leg as City boss with his team in front, Guardiola still has a code to crack when it comes to his players producing their best form on such occasions.
Foden has the final word
Another familiar tale of City's failures in Champions League knockout ties has been missed chances, and Foden's experiences in the closing stages played into this narrative. The fact the 20-year-old persevered to flip the script was in keeping with an all-action performance. Five shots and three on target were more than any other City player, while he completed three out of four dribbles and 89 per cent of his 45 passes in the Dortmund half, creating one chance.
Dias down on his high standards
The Portugal centre-back has been a symbol of City discovering a more dogged side this season, but this was a tough experience for him. Shutting out a striker of Haaland's prowess should not be sniffed at, but being dumped on the turf by the youngster was a chastening moment and Dias only won three of his eight duels.
Guardiola's selection could have played a part, with Dias often finding himself uncomfortable on the left-hand side of City's fluid defensive set-up, without Aymeric Laporte or Oleksandr Zinchenko to provide balance.
City host Leeds United on Saturday, with Guardiola describing Marcelo Bielsa's side as "the worst opponent" his side could play between Champions League legs. Edin Terzic has not opined so strongly on Dortmund's weekend trip to Stuttgart.