Ousmane Dembele scored the winner as Borussia Dortmund booked their place in a fourth successive DFB-Pokal final with a thrilling 3-2 victory over holders Bayern Munich.
Marco Reus gave Dortmund a 19th-minute lead but Bayern were in control at half-time thanks to goals from Javi Martinez and Mats Hummels.
Pierre-Emerick Aubameyang brought Dortmund level on 69 minutes and soon after Dembele stunned the home fans.
Dortmund will be fancied to make it fourth time lucky after three final defeats when they meet Eintracht Frankfurt in Berlin on May 27.
Dortmund were heavily beaten in the recent Bundesliga meeting between the teams at the Allianz Arena but on this occasion they held off Bayern in the early stages and struck themselves with the help of a defensive mistake.
Martinez’s weak backpass to goalkeeper Sven Ulreich – standing in for the injured Manuel Neuer – was cut out by Raphael Guerreiro, whose shot hit the post before Reus tapped home.
Bayern were level on 28 minutes when Martinez atoned for his error by powering a header through Dortmund goalkeeper Roman Burki from Alonso’s corner.
Robert Lewandowski was denied by a last-ditch challenge from Sven Bender and Martinez was denied a second by the bar as Bayern piled pressure on their rivals.
It was a former Dortmund player that put Bayern ahead before half-time, Hummels side-footing home from just inside the box in the 42nd minute after good play by Xabi Alonso and Franck Ribery.
The visitors were fortunate not to go into the break 3-1 down after Lewandowski saw a one-on-one saved by Burki and luck was on their side again when Arjen Robben missed a glorious chance.
That proved to be a huge moment as Aubameyang headed home a cross from Dembele, who five minutes later cut onto his left foot to fire a shot in off the bar and send Dortmund through to the final.