Bayern Munich missed all four of their penalties as Borussia Dortmund reached the German Cup final after a shootout.
Only Sebastian Kehl and Ilkay Gundogan scored from seven penalty-takers, with Bayern's Xabi Alonso and Philipp Lahm slipping as they took their spot-kicks.
Mario Gotze was denied and goalkeeper Manuel Neuer hit the bar as Dortmund booked their trip to Berlin on 30 May.
Robert Lewandowski gave Bayern the lead in normal time before Pierre-Emerick Aubameyang levelled.
Dortmund boss Jurgen Klopp, who is leaving the club at the end of the season, will attempt to win the cup for a second time in his last match.
Arminia Bielefeld and Wolfsburg play in Wednesday's second semi-final.
Bayern, who were crowned German champions for a record 25th time on Sunday, started the match still in a position to emulate the success of Jupp Heynckes' side, who won a Champions League, Bundesliga and cup treble in 2013.
But despite dominating for much of normal time at the Allianz Arena, they failed to find the killer touch that would have befitted their dominance of possession and dangerous-looking build-up play.
The home side looked to be cruising after Lewandowski opened the scoring, the Polish striker finishing from a tight angle after his chipped shot came back off the post.
Dortmund only registered their first shot on target with 72 minutes played but levelled just three minutes later when Aubameyang slid in at full stretch to meet Henrikh Mkhitaryan's cross.
The away side had substitute Kevin Kampl sent off in extra time after picking up a second yellow card but held on for penalties as Bastian Schweinsteiger twice missed with headers from close range.
With four league games left to play, Bayern can now turn their attention to Barcelona, who they face at the Nou Camp in a Champions League semi-final first-leg on 6 May.
The German champions may be without Arjen Robben, however, as the Dutch winger was withdrawn with an apparent calf strain just 16 minutes after coming on as a second-half substitute on his return from injury.
"I am very proud of my team," said Bayern boss Pep Guardiola. "We played very well. I congratulate Dortmund."
"That was a hell of a game," said Klopp. "Both teams gave everything and Bayern were certainly superior in the first half, but we more than deserved to equalise in the second. Today was our day."
- 5BenatiaBooked at 113mins
- 13Ferreira de SouzaBooked at 64mins
- 3AlonsoBooked at 72mins
- 6Thiago AlcántaraSubstituted forRobbenat 68'minutesSubstituted forGötzeat 84'minutes
- 25MüllerSubstituted forSchweinsteigerat 76'minutes
- 4Costa Santos
- 22LangerakBooked at 125mins
- 25PapastathopoulosBooked at 101mins
- 16BlaszczykowskiSubstituted forKamplat 83'minutesBooked at 108mins
- 6BenderSubstituted forKehlat 90'minutes
- 7KagawaSubstituted forMkhitaryanat 70'minutes
- Peter Gagelmann
- Shots on Target