Manchester City survived an early scare to see off Borussia Dortmund and reach the Champions League semi-finals for the first time under Pep Guardiola.
A superb strike from the outstanding Jude Bellingham saw the German side level their quarter-final tie after 15 minutes of the second leg at Signal Iduna Park.
City responded in the second half with a penalty from Riyad Mahrez and a fine effort from Phil Foden to win 2-1 on the night and progress 4-2 on aggregate.
The result ended City’s run of quarter-final frustration having gone out at the last-eight stage in each of the previous three years.
Dortmund, who were aggrieved to have a goal disallowed in the first leg, felt the penalty award for handball against Emre Can was harsh but City, who also hit the woodwork through Kevin De Bruyne, were dominant overall.
Guardiola’s side also did well to keep the highly-rated Erling Haaland quiet although, in England international Bellingham, the hosts certainly possessed another tricky youngster.
It was the 17-year-old who took centre stage early on.
City’s day had begun badly with fireworks being set off outside their hotel by Dortmund fans in the early hours.
Guardiola claimed he “slept like a baby” through the commotion but City were caught out by a positive start from the hosts.
Mahmoud Dahoud had the first serious opportunity with a powerful strike from outside the area and Bellingham then took over, seemingly covering all areas of the pitch in defence and attack.
He was in the right place at the right time to open the scoring after another Dahoud effort was blocked by Ruben Dias.
Bellingham showed great control as he seized on a loose ball and cleverly switched feet to clip a shot into the top corner. Ederson did get his fingers to it but there was no stopping a shot that levelled the tie and gave Dortmund the edge on the away goals rule.
City responded well and went close to an equaliser as De Bruyne rattled the crossbar after winning back possession.
That sparked a wave of City pressure and Mateu Morey got lucky when he diverted a De Bruyne cross towards his own goal and keeper Marwin Hitz reacted quickly enough to block.
Foden then hooked a ball into the box from the byline and Mahrez controlled beautifully before his shot was kept out by the backtracking Bellingham on the line.
Oleksandr Zinchenko then had a header saved by Hitz and De Bruyne dragged an effort wide.
City finally regained control of the tie 10 minutes into the second half after Can was penalised for handball.
The former Liverpool midfielder argued that he had headed the ball onto his arm but the spot-kick award stood after a lengthy VAR review.
Mahrez made no mistake from the spot to equalise on the night and put City ahead on aggregate.
Dortmund did not give up and Mats Hummels headed narrowly over from a Marco Reus free-kick but the hosts became stretched as City kept up the pressure.
De Bruyne sliced a shot wide but was unlucky not to be awarded a free-kick for a foul in the process.
He then went even closer as he skipped around a challenge from Hummels but Hitz produced a fine save.
The decisive goal came from the resulting corner, which was taken short and worked to Foden on the edge of the area.
The 20-year-old took aim and struck a sweet shot which rebounded past Hitz off the inside of the near post.
That did the job for the Premier League leaders, although they were still not finished and Zinchenko tested Hitz with a fierce effort.