The German outfit were by far the more progressive for most of the match and created a string of half-chances, but Yannick Carrasco had the best chance of the first half with a near-post shot.
It was a Spanish attacker who scored the first goal of the game – but it was Dani Olmo, for Leipzig, with a fine header after a Marcel Sabitzer cross. But then Joao Felix, off the bench for Atleti, danced through the defence to win, and convert, a penalty.
Sharing the full story, not just the headlines
Just when it seemed extra time was beckoning, the Champions League produced a second late winner in the quarter-finals, this time with Tyler Adams drilling in a shot which deflected off Stefan Savic and in to send Leipzig through.
Here are the player ratings from Lisbon.
Peter Gulacsi – 7. A couple of good saves early on. Decent handling, good footwork.
Lukas Klostermann – 6. Strong down the channel. Coped fine both centrally and in wider areas. Good passing out. Desperate tackle gave Atletico the penalty.
Dayot Upamecano – 9. Not sure he missed a single challenge, aerial duel or opportunity to dribble out of defence. A class apart at times.
Marcel Halstenberg – 7. Had a good chance early on. Diligent with his tracking and tackling.
Konrad Laimer – 6. A decent outlet and full of running, but the delivery was disappointing at times.
Marcel Sabitzer – 8. Excellent on the ball. Always attacked the space, picked the right pass and delivered a perfect cross for the opening goal.
Kevin Kampl – 8. Like Sabitzer he was superb in possession. Played the slightly more defensive-minded role, but always forward-thinking on the ball.
Angelino – 6. Got into so many good areas of the pitch, only to disappoint with his final pass or cross.
Dani Olmo – 7. Clever movement, neat one-touches. Sometimes sloppy in possession but scored a superb header.
Christopher Nkunku – 7. Frustrating; showed great footwork and link play at times, but dribbled into blind alleys and missed a couple of simple passes too.
Yussuf Poulsen – 5. Hard work comes as standard for Poulsen but he lacks the finishing touch as a No. 9 at this level.
Jan Oblak – 6. Made one routine save, could do nothing about either goal.
Kieran Trippier – 5. Didn’t get to see much of his usual good crossing. Struggled against Angelino and Nkunku.
Stefan Savic – 7. Tough heading, good tackles. Unfortunate with the deflection for the late goal.
Josema Gimenez – 7. Usual fully committed display but did give a few poor fouls away.
Renan Lodi – 7. The best outlet for Atletico most of the game. Booked for a poor dive trying to win a penalty. Deserved more of the ball when he rampaged forward.
Hector Herrera – 5. Played as the narrow right-sided midfielder but had very little impact on the ball and left his right-back isolated at times.
Koke – 6. In and out of the game. Neat on the ball as usual but didn’t really offer much invention going forward.
Saul Niguez – 7. Decent on the ball, hard-working, protected the defence well against a rotating attacking midfield line.
Yannick Carrasco – 7. Started very brightly, forced a save and made a few dribbles, but faded hugely.
Marcos Llorente – 6. Had no success running off Costa or trying to bully the Leipzig defence.
Diego Costa – 4. Poor with his attempted hold-up play and was dominated in the air by Upamecano. Spent much of the game asking for fouls as he couldn’t actually win the ball himself.