Eden Hazard scored the winning penalty as Chelsea edged past Eintracht Frankfurt 4-3 on penalties to set up an all-English Europa League final against Arsenal.
Hazard, who could have played his final game for the Blues at Stamford Bridge, converted after Chelsea goalkeeper Kepa Arrizabalaga had saved from both Martin Hinteregger and Goncalo Paciencia.
Chelsea will now meet Arsenal in the final in Baku on 29 May and the result means both the Champions League and Europa League final will be played between English clubs this season – the first time all four finalists in Europe’s top two competitions have come from one nation.
With the score 1-1 after the first leg, Chelsea took the lead in the second when Ruben Loftus-Cheek coolly stroked into the far corner in the 28th minute, but the night was far from straight-forward.
Frankfurt levelled the tie four minutes after half-time when Luka Jovic slotted past Arrizabalaga after being played in by Mijat Gacinovic.
Jovic’s goal punished Chelsea for a sloppy start to the second half and the Blues continued to be wasteful as Stamford Bridge became increasingly restless.
In extra time the Germans twice had efforts cleared off the line with David Luiz first denying Sebastian Haller and then Davide Zappacosta clearing Haller again at a corner.
Chelsea thought they had won it late in extra time but Cesar Azpilicueta, who later missed first in the penalty shootout, had a goal ruled out when the referee deemed he had bundled the ball out of Frankfurt keeper Kevin Trapp’s hands.