Arsenal and Chelsea will contest an all-Premier League final in the Europa League.
Both London sides overcame Valencia and Eintracht Frankfurt respectively to reach the decider.
The Gunners had beaten Valencia 3-1 at the Emirates last week. But they started poorly at the Mestalla and fell behind early through Kevin Gameiro's goal.
Arsenal showed firepower at the other end and particularly through Pierre-Emerick Aubameyang.
The Gabonese striker scored a hat-trick, while Alexandre Lacazette also scored to earn a 4-2 away win.
Gameiro completed a brace for Valencia but it was too little too late.
Chelsea meanwhile had drawn 1-1 in Germany last week. They took a 28th minute lead when Ruben Loftus-Cheek found the net.
But Eintracht's highly-rated striker Luka Jovic equalised four minutes after half-time.
The game eventually went to extra-time where Chelsea had a goal correctly ruled out for off-side.
Which all meant penalties would decide the fate of both teams.
Kepa Arrizabalaga saved Martin Hinteregger and Goncalo Paciencia's efforts to allow Eden Hazard to convert the winning kick.
It means both major European finals feature all-English contests. Last night, Arsenal's North London rivals Tottenham booked their place in a Champions League final against Liverpool.