Eden Hazard scored the winning penalty as Chelsea prevailed in a shootout to set up an all-English Europa League final against Arsenal.
After Cesar Azpilicueta’s penalty was saved, Blues keeper Kepa Arrizabalaga saved twice, before Hazard – with what could be his final kick for Chelsea at Stamford Bridge – clinched victory.
Ruben Loftus-Cheek’s goal – his 10th of the season – just before the half-hour mark of the second leg put Chelsea in a commanding position.
Hazard set up the midfielder, twisting and turning away from his man and threading a perfect pass though to Loftus-Cheek, who calmly steered the ball beyond keeper Kevin Trapp.
It came a couple of minutes after David Luiz’s near-post header from Hazard’s left-wing corner was cleared off the line by veteran defender Makoto Hasebe.
Eintracht Frankfurt hit back by equalising four minutes into the second half.
Striker Luka Jovic laid the ball off to Mijat Gacinovic and then collected the Serbian’s return pass before firing past Kepa.
The German side continued to trouble Chelsea, including in extra time, when first Luiz and then Davide Zappacosta – on as a substitute for the injured Andreas Christensen – cleared off the line to deny Sébastien Haller.
Chelsea thought Azpilicueta had headed them back in front after capitalising on a fumble by Trapp, but the Blues captain was adjudged to have fouled him.
After Ross Barkley scored for Chelsea in the shootout, Trapp’s save from Azpilicueta raised the hopes of the noisy visiting fans.
But Jorginho and David Luiz converted their spot-kicks for Chelsea and Martin Hinteregger shot straight at Kepa, who then saved from Goncalo Paciencia.
That gave Hazard, who continues to be linked with a move to Real Madrid, the chance to be a Chelsea hero yet again, and he made no mistake.