Chelsea have held their nerve in a penalty shootout against Eintracht Frankfurt to earn a place in the Europa League final.
Ruben Loftus-Cheek's opener on Thursday night was cancelled out by Luka Jovic, but neither side could add a decisive third goal which left the tie locked at 2-2 on aggregate.
Cesar Azpilicueta's early miss in the shootout gifted the advantage to Frankfurt, but Kepa Arrizabalaga saved from Martin Hinteregger and Goncalo Paciencia to set up a showdown with city rivals Arsenal in the final later this month.
Frankfurt created the first opportunity of the game in West London, but Jovic failed to get any power behind his free header from by the penalty spot.
Chelsea were prepared to take the conservative approach when it came to defending their slender advantage in the tie, but that only provided Frankfurt with encouragement as Danny da Costa saw a 15-yard volley superbly kept out by Arrizabalaga.
The Blues eventually found some rhythm towards the midway point of the half, with Olivier Giroud having a close-range effort kept out by Kevin Trapp after some good work from Emerson Palmieri.
David Luiz then saw a glancing header cleared off the line at the back post, but Chelsea soon took advantage of their improvement courtesy of Loftus-Cheek.
Eden Hazard dribbled around two Frankfurt players on the left before threading a pass through to the England international, who took his time before curling a low effort into the far corner from 10 yards out.
Frankfurt's task had not really changed, and that led to both teams showing very little ambition to find a second goal of the match during the closing minutes before the break.
However, the visitors returned for the restart with renewed energy, and it took just four minutes of the second half for Frankfurt to get themselves level on the night and in the tie.
Jovic worked a situation for himself to latch onto a through-ball, and the Serbian had the relatively simple task of slotting the ball into the bottom corner from 10 yards out under no pressure from a Chelsea defender.
Giroud should have done better shortly afterwards with the Frenchman firing wide from 15 yards, but the opportunity only represented a brief respite for the home side as Frankfurt set about finding a second.
Mijat Gacinovic had a 25-yard volley punched away from goal by Arrizabalaga, while Filip Kostic flashed a low strike with his left foot wide of the far post.
Chelsea managed to find a way to stem the flow of chances which were being created by the visitors, but Sarri's side continued to create very little at the opposite end of the pitch.
An injury to Andreas Christensen led to Sarri introducing Davide Zappacosta rather than Gary Cahill, and the Italian tried to make an instant impact with a low strike which needed to be parried away by Trapp.
Chelsea were always wary that a second Frankfurt goal during the closing stages would effectively lead to their exit, and the 90 minutes eventually petered out with the two teams prepared to take their chances in extra time.
Ross Barkley had the first opportunity in the added 30 minutes as the Englishman curled over from 30 yards, while Azpilicueta sent a volley off target when he perhaps should have scored from 10 yards out.
The home side were making most of the running, but Sebastian Haller somehow failed to put Frankfurt ahead from close range as Luiz got back to clear his scuffed effort from six yards off the line.
Haller also went agonisingly close seconds before the half-time whistle, with Zappacosta needing to be in the right place to clear the Frenchman's header off the line in the same area as Luiz.
Chelsea remained intent on trying to regain their earlier advantage, but Palmieri and Zappacosta were each denied by Trapp, who was enjoying an excellent game for the Bundesliga side.
Azpilicueta thought that he had netted a late winner for his team, but the defender was correctly adjudged to have fouled Trapp when jumping for a high ball.
The match finally went to a penalty shootout with Frankfurt seemingly handling the pressure better than their hosts, but Arrizabalaga made himself a hero by making saves from Frankfurt's final two attempts.
Hazard was provided with the responsibility of sending Chelsea into the final, and the Belgian made no mistake from 12 yards on what could be his final appearance at Stamford Bridge.
CHELSEA (4-3-3): Arrizabalaga; Azpilicueta, Christensen (Zappacosta 74'), Luiz, Palmieri; Kovacic, Jorginho, Loftus-Cheek (Barkley 86'); Willian (Pedro 62'), Giroud (Higuain 96'), Hazard
EINTRACHT FRANKFURT (3-4-1-2): Trapp; Abraham, Hinteregger, Falette; Da Costa, Rode (De Guzman 70'), Hasebe, Kostic; Gacinovic (Paciencia 118'); Rebic (Haller 90+3'), Jovic