Two goals from substitute Gerard Deulofeu helped Watford produce a dramatic comeback from 2-0 down to beat Wolves 3-2 and set up an FA Cup final showdown with Manchester City.
Strikes from Matt Doherty before the break and Raul Jimenez after it had appeared enough to make Nuno Espirito Santo's team the first Wolves side to reach an FA Cup final since 1960.
But Deulofeu pulled one back with a brilliant chip 11 minutes from the end before, in injury time, Leander Dendoncker fouled Troy Deeney and, after a VAR check, Deeney smashed home the penalty to force extra time.
Deulofeu produced the decisive moment in the first extra period, sliding home an angled finish to put Watford into their first FA Cup final since 1984.
On the half-hour, Watford produced their best moment so far, Deeney dropping deeper to float in a cross for Andre Gray, who could only divert the ball over.
Back came Wolves, and Watford keeper Heurelho Gomes made a fine stop from Dendoncker's deflected shot -- but from the corner they were in front, Jonny crossing for Doherty to head in.
Watford could have conceded a second soon afterwards when Jota set off on a dangerous run, cut inside and bent his shot narrowly wide.
But the Hornets recovered to create another chance on half-time, Conor Coady making a brilliant block to thwart Gray after Deeney had flicked on.
Gomes made a good save from Jimenez' fierce shot in the opening moments of the second half, and then Jota, stretching at the far post, could not keep his attempt down.
As the hour approached with Watford yet to muster an effort on target, Deeney headed wide and Jose Holebas was booked for fouling Jota as he led a Wolves break.
But Wolves were not to be denied, doubling their lead after 62 minutes when Jiminez chested down a cross and fired acrobatically in, the goal confirmed after a VAR check for offside.
Watford introduced Deulofeu for Will Hughes -- and, out of the blue, were back in the game with 11 minutes to go as the substitute picked up possession, turned and floated a beautiful finish over Ruddy and into the top corner.
But with seconds left, Dendoncker fouled Deeney to give Watford their lifeline and the striker's composure from the spot took the game to extra time.
Jonny's shot was saved by Gomes as the extra half-hour began, and Watford were forced into a change when Holebas limped off to be replaced by Adam Masina.
Wolves brought on Adama Traore for Moutinho but, with 105 minutes played, they were behind when Deulofeu linked with Deeney and Gray before sliding an angled finish past Ruddy.