Manchester City came from a goal down to beat Borussia Dortmund 2-1 on Wednesday night and qualify for the Champions League semi-finals 4-2 on aggregate.
Pep Guardiola's side led 2-1 from the first leg played at the Etihad Stadium last week, and got the job done, albeit the hard way, in Germany.
The hosts were the first to score through Jude Bellingham, but a Riyad Mahrez penalty and a Phil Foden long-range strike saw them safely through.
The first chance fell to the hosts just on the quarter-hour mark, and Bellingham buried it to make Champions League history.
The ball rebounded and arrived at the feet of the youngster just outside the box, and he fired a brilliant shot into the top right corner to become among the youngest scorers in the competition.
City went all out for the equalizer and came close on two occasions, with Kevin De Bruyne hitting the crossbar with a ferocious shot from distance.
Mahrez and Oleksandr Zinchenko came close again for City, but in the end, they trailed 1-0 going into the break.
They were however handed a lifeline as former Liverpool man Emre Can handled the ball inside the box in the 52nd minute, and after a VAR check, the referee awarded a penalty kick.
Mahrez then stepped up to easily tuck it to put City on level terms on the night and ahead in the tie.
Both sides had a number of half-chances to score before City put the match to bed with a second on the night.
Bernado Silva found Foden on the edge of the box straight from a corner, and the youngster did not hesitate, unleashing a hard shot that went in via the post for a 2-1 lead.
City held on to win the match and the tie, making the last four for the first time since 2016.