Bayer Leverkusen booked their place in the German Cup final on 30 May at Berlin's Olympic Stadium having needed extra-time to beat second-division side Mainz 4-1 in their semi-final.
Having last won the competition in 1993, Leverkusen are hunting their second chance to be German Cup winners and although it finished 1-1 in normal time after Mainz forced a late equaliser, Bayer hit three goals in extra time.
With little to choose between the sides in normal time, Germany striker Stefan Kiessling had a goal disallowed with less than 15 minutes left, but Leverkusen made the pressure count. Bayer's Renato Augusto had his shot saved by Mainz's Dimo Wache on 82 minutes and Greek striker Angelos Charisteas pounced on the rebound to tap the ball home.
But Mainz, who are challenging for promotion to the Bundesliga, hit back just two minutes from time when striker Aristide Bance headed home to hit the equaliser and take the game into extra-time.
Chile midfielder Arturo Vidal restored the advantage for Leverkusen with an early strike in the first period and Simon Rolfes made the result safe when he tapped a header from Germany defender Manuel Friedrich into the back of the net in the 104th minute. And Czech defender Michal Kadlec completed the rout with a fourth goal in the 117th minute.
In Wednesday's semi-final, Hamburg host Werder Bremen in the first of four meetings between the sides in the next month - twice in the UEFA Cup and again in the Bundesliga.