Arsenal will play Manchester City in the Carabao Cup final after coming from behind to beat Chelsea in a thrilling semi-final second leg at Emirates Stadium.
After a goalless first leg, Chelsea took the lead in the tie when Tiemoue Bakayoko played the ball into Pedro and he released Eden Hazard, who slotted past David Ospina from 12 yards out.
But the advantage only lasted five minutes before Nacho Monreal’s header bounced off Marcos Alonso and then Antonio Rudiger and into the net.
There was also a touch of fortune about the Gunners’ second as Alexandre Lacazette’s pull-back rebounded off Rudiger and Granit Xhaka pounced from close range.
Arsenal might have added a third but Alex Iwobi’s shot was blocked by the legs of Willy Caballero, but the miss did not prove costly.
The Gunners, bidding to win this competition for the first time since 1993, meet Manchester City in the final at Wembley on 25 February after Pep Guardiola’s side saw off Bristol City in the other semi-final.
A miserable couple of months for Arsenal has seen them drop to sixth in the Premier League, 23 points behind leaders Manchester City, and lose to Championship Nottingham Forest in the FA Cup.
They have also seen Alexis Sanchez, their top scorer from last season, move to Manchester United in a swap deal with Henrikh Mkhitaryan.
But this vital victory keeps them on course to win their fourth trophy in five years – and with it claim the only domestic competition that Arsene Wenger has not won in his 21 years at the club.
Arsenal, who saw a £43.6m bid for Borussia Dortmund striker Pierre-Emerick Aubameyang rejected earlier on Wednesday, went behind after only seven minutes with Hazard taking advantage of poor marking.
But rather then collapsing, the Gunners responded with one of their best defensive performances of the season to move into their first League Cup final since 2011.
Chelsea, third in the Premier League and undefeated in 12 matches in all competitions, only managed one more shot on target.