Match ends, RB Leipzig 2, Atlético de Madrid 1.
RB Leipzig overcame a typically cautious Atletico Madrid to reach their first Champions League semi-final just 11 years after their formation.
After a poor first half, Dani Olmo headed the German side ahead but Atleti substitute Joao Felix levelled the tie from the penalty spot after he had been fouled in the box.
Madrid, chasing a third final in the last six years, seemed content to take the one-legged tie in Lisbon to extra time and sat back for much of the game.
They were punished for their characteristically defensive approach as Tyler Adams' deflected strike two minutes from time sent Julian Nagelsmann's exciting side through to face Paris St-Germain.
- A superstar young coach & a keeper from Hereford - the men behind Leipzig's dream
- Leipzig: Why are they dividing football so much?
No Werner, no problem
Leipzig came into the tie without the focal point of their attack after Timo Werner's £54m transfer to Chelsea earlier in the summer.
Werner scored 34 goals for the club this season while the starting XI in their first quarter-final at this level had mustered just 44 between them.
A lack of cutting edge was as evident as was expected, with Leipzig's enterprising approach play all-too-often leading to nothing.
The German side were the only team playing progressive football in a dull first period - and that sense of adventure included centre-back Dayot Upamecano frequently carrying the ball out from a back three and suggesting he is a defensive prospect out of the very top drawer.
Their deserved lead arrived early in the second half when Marcel Sabitzer's fine cross was met by Olmo's late surge from midfield and he flicked a header beyond the dive of Atleti's renowned keeper Jan Oblak.
If Leipzig's lack of threat was down to the absence of an individual, their opponents' issues were more systemic.
Former Chelsea striker Diego Costa was marooned up front and was bullied by young Frenchman Upamecano at times.
Just as in PSG's fightback on Wednesday night, though, the introduction of a £100m+ substitute made the difference.
Portugal playmaker Felix was excellent as soon as he entered the match and won a penalty with a driving run into the area then confidently converted the penalty.
However any sense of a change in momentum was stymied by Atleti boss Diego Simeone, who appeared content to play for extra time as he instructed his side - unbeaten in 18 games - to sit in.
But a brilliant pass from Sabitzer freed Angelino into space and after he found Adams, the United States midfielder's powerful shot flew in off the heels of Stefan Savic past a stranded Oblak.
Man of the match - Dayot Upamecano (RB Leipzig)
- RB Leipzig are the first German side outside of Bayern Munich and Borussia Dortmund to reach the semi-finals of the Champions League since Schalke in 2010-11.
- Atlético Madrid have failed to progress against a German side in the Champions League knockout stages for the first time, getting through on all three previous occasions (v Bayer Leverkusen twice and Bayern Munich once).
- Atlético Madrid have scored in each of their last 19 games in all competitions, last enjoying a longer scoring run in 2012 (24 games).
- RB Leipzig's Dani Olmo is the first Spaniard to score against Atlético Madrid in the Champions League since Míchel netted for FK Qarabag in October 2017.
- Marcel Sabitzer registered his 26th goal involvement in all competitions for RB Leipzig this season (16 goals, 10 assists), eight more than any other player currently with the German club.
- Tyler Adams' strike was his first goal for RB Leipzig in what was his 28th appearance in all competitions for the club.
- Atlético Madrid's Kieran Trippier became the fourth different English player to start a Champions League quarter-final with a non-English club (after David Beckham with Real Madrid and PSG, Owen Hargreaves with Bayern Munich and Steven McManaman with Real Madrid).
- 16KlostermannBooked at 70mins
- 27LaimerSubstituted forAdamsat 72'minutes
- 44KamplBooked at 82mins
- 7SabitzerSubstituted forMukieleat 90+2'minutes
- 25OlmoSubstituted forSchickat 83'minutes
- 18NkunkuSubstituted forHaidaraat 83'minutesBooked at 87mins
- 38Novoa Ramos
- 2GiménezBooked at 90mins
- 12LodiBooked at 62mins
- 6KokeSubstituted forFelipeat 90+2'minutes
- 16HerreraSubstituted forJoão Félixat 58'minutes
- 19Diego CostaSubstituted forMorataat 72'minutes
- 7João Félix
- 20Machín Pérez
- Szymon Marciniak
- Shots on Target
Second Half ends, RB Leipzig 2, Atlético de Madrid 1.
Péter Gulácsi (RB Leipzig) wins a free kick in the defensive half.
Foul by Álvaro Morata (Atlético de Madrid).
Angeliño (RB Leipzig) wins a free kick in the defensive half.
Foul by Felipe (Atlético de Madrid).
José Giménez (Atlético de Madrid) is shown the yellow card.
Tyler Adams (RB Leipzig) wins a free kick in the defensive half.
Foul by Álvaro Morata (Atlético de Madrid).
Corner, Atlético de Madrid. Conceded by Lukas Klostermann.
Attempt blocked. Yannick Carrasco (Atlético de Madrid) right footed shot from outside the box is blocked. Assisted by Saúl Ñíguez.
Foul by Tyler Adams (RB Leipzig).
Renan Lodi (Atlético de Madrid) wins a free kick on the left wing.
Substitution, Atlético de Madrid. Felipe replaces Koke.
Substitution, RB Leipzig. Nordi Mukiele replaces Marcel Sabitzer because of an injury.
Marcel Sabitzer (RB Leipzig) wins a free kick in the attacking half.
Foul by José Giménez (Atlético de Madrid).
Goal! RB Leipzig 2, Atlético de Madrid 1. Tyler Adams (RB Leipzig) right footed shot from outside the box to the centre of the goal. Assisted by Angeliño.
Amadou Haidara (RB Leipzig) is shown the yellow card for a bad foul.
Foul by Amadou Haidara (RB Leipzig).
- Vampire origins: Nine fangtastic facts on their history
- Food and lockdown: Has it changed the way we eat?