Marco Reus' 120th-minute penalty broke Union Berlin hearts and sent Borussia Dortmund stumbling into the third round of the German Cup with an epic 3-2 win on Wednesday.

Sebastian Polter had twice brought Union back from behind, but the second division side's spirited resistance was ended in the final minute of extra time, as Marvin Friedrich brought down Christian Pulisic and Reus smashed home the penalty.

Pulisic prodded Dortmund ahead five minutes before half-time, stabbing in the rebound after goalkeeper Rafal Gikiewicz had clawed Shinji Kagawa's header off the line.

Union came out fighting in the second half, and was rewarded for its spirit when substitute Polter poked in an equaliser on the counter-attack just after the hour mark.

Maximilian Philipp appeared to end the resistance on 73 minutes, picking up Pulisic's through ball and rifling the ball past Gikiewicz.

Yet Polter sprung another surprise minutes from time, heading in Robert Zulj's cross to level the scores again.

Union fought on bravely in extra-time before Reus's penalty sent Dortmund into the third round.

“Congratulations to Union Berlin,” said Dortmund coach Lucien Favre. “It was very hard to break them down today.”

Elsewhere, Schalke also edged into the third round, ending its three-game goal drought in a 1-1 draw before winning 6-5 on penalties to scrape past Cologne.

Jhon Cordoba's deflected shot gave Cologne the lead just before half-time, but Schalke's salvation came in the form of an 89th-minute penalty, coolly converted by Nabil Bentaleb.

Mark Uth netted the winning spotkick in sudden death to see Schalke through.

Bayer Leverkusen cruised to a 5-0 victory over Borussia Moenchengladbach, while Hoffenheim coach Julian Nagelsmann's cup curse continued against future employers RB Leipzig.

Julian Brandt fired Leverkusen in front with a well-angled shot on five minutes, and Tin Jedvaj doubled the lead from close range shortly before the break.

In the second half, Karim Bellarabi scored twice in seven minutes before Kevin Volland added a fifth to cap a fine evening for Leverkusen.

Nagelsmann's Hoffenheim lost 2-0 in Leipzig to crash out of the second round for a third season in a row.

Timo Werner latched onto a Marcel Halstenberg cross to give Leipzig the lead on 48 minutes, adding a second eight minutes later as the home side tore into Hoffenheim on the counter-attack.

Second division Holstein Kiel delivered Wednesday's only upset, beating top flight Freiburg 2-1.