Manchester City beat Championship side Southampton 2-1 with a late goal from Nico Gonzalez to book a place in an unprecedented fourth consecutive FA Cup final and keep alive their hopes of a domestic treble.
Southampton, who upset Arsenal in the quarter-finals, looked poised to continue their dream run when Finn Azaz struck a gorgeous shot from distance in the 79th minute that James Trafford had little chance of stopping.
But in what was a thrilling second half of the semi-final, Jeremy Doku wiped out Southampton's lead four minutes later when he worked the ball onto his right foot before unleashing a shot from the edge of the penalty area that deflected off James Bree and into the net.
Gonzalez struck a rocket from 20 yards out in the 87th minute and City, who won the League Cup earlier this season and are neck and neck with Arsenal at the top of the Premier League table, held on for victory in a breathless final few minutes.
City will meet the winner of Sunday's semi-final between Chelsea and Leeds United in the May 16 final at Wembley.

Rana bowls Bangladesh to thrilling test win against Pakistan
Dravid bets on new franchise league to grow cricket in soccer-dominated Europe
Napoli beaten 3-2 by Bologna to leave Champions League spot in balance
Tottenham relegation fears remain after home draw with Leeds
Jim Colbert, 35-time professional winner, dies at 85
