Borussia Dortmund reached the German Cup final for a record fourth successive season after staging a thrilling five-minute, two-goal comeback to stun holders and hosts Bayern Munich 3-2 on Wednesday.
Teenager Ousmane Dembele scored one goal and set up another in a five minute spell in the second half to help Dortmund come back from 2-1 down after having taken a 19th-minute lead through Marco Reus.
"We started well but it is brutally difficult to play attacking football and defend well against Bayern," said scorer Reus. "We had to believe in us, we talked about it at halftime and we did that. Bayern had the far bigger chances, that's clear, but they did not score and we did."
The game lived up to its billing with both teams playing an attacking game and Dortmund avenging last year's Cup final defeat to Bayern.
The Bavarians have now failed to win any of their last five matches in all competitions and following last week's Champions League exit to Real Madrid, have only the league title to aim for.
"This is extremely bitter and I am very disappointed," said Bayern captain Philipp Lahm, who is retiring at the end of the season. "We wanted a lot more out of it but we did not kill the game off when we could have."
"Now we must digest this and move on."
[caption id="attachment_60209" align="aligncenter" width="640"]
Bayern's Robert Lewandowski in action with Dortmund's Sven Bender and Roman Burki Reuters
Three-times winners Dortmund face Eintracht Frankfurt, who edged past Borussia Moenchengladbach on penalties on Tuesday, in the final in Berlin next month.
The visitors looked sharper at the start and pounced on a defensive mistake by defender Javi Martinez in the 19th minute, with Raphael Guerreiro's shot bouncing off the post and Reus sweeping in to score.
The hosts roared back and Martinez made amends for his mistake in the 29th, heading in the equaliser with Bayern playing deep crosses from the wings to stretch the Dortmund defence.
Xabi Alonso delivered a perfect ball for Franck Ribery on the left in the 41st and the Frenchman found Mats Hummels whose low drive put them ahead against his former club.
Bayern hit the woodwork in the second half through Arjen Robben and should have added at least one more goal after missing several more chances with the Dortmund defence completely overrun.
But the visitors carved out an unlikely equaliser when Pierre-Emerick Aubameyang, lurking at the far post, nodded in a perfect Dembele cross in the 69th.
The 19-year-old France international scored the winner five minutes later, curling a superb shot past keeper Sven Ulreich to complete a quick break after Lahm had lost possession.
Bayern Munich 2
Martinez 28, Hummels 41 Borussia Dortmund 3
Reus 19, Aubameyang 69, Dembele 74
Tuesday, April 25
Borussia Moenchengladbach 1
Jonas Hofmann 45+2 Eintracht Frankfurt 1
Taleb Tawatha 15
Penalty Shootout: 6-7