Marco Reus scored one goal and set up another as Borussia Dortmund reached the DFB-Pokal semifinals with a 3-1 win at Stuttgart that was briefly interrupted by tennis balls on Tuesday.
Reus took last year's beaten finalists' first chance in the fifth minute, converting at the back post when Pierre-Emerick Aubameyang was unable to reach Henrikh Mkhitaryan's cross in the middle.
Lukas Rupp equalized in the 21st with a fine strike from distance after the visitors failed to properly clear the danger from Daniel Didavi.
The game was held up briefly to remove a shower of tennis balls that Dortmund fans had thrown onto the pitch. ''Great tennis,'' read a banner in their block. The actions appeared to be a protest against ticket prices.
Aubameyang restored Dortmund's lead in the 31st when he took two touches after collecting Reus' through ball before firing it inside the left post.
Both sides missed chances in a frantic second half, with Stuttgart going close through Filip Kostic after surviving a goalmouth scramble and blocking Mkhitaryan at the other end. Mkhitaryan also missed a good chance in the 88th when he fired over.
With Stuttgart pushing hard for the equalizer, Mkhitaryan finally sealed the win on a counterattack in the 89th when Aubameyang sprinted half the length of the pitch and gave the Armenian a simple tap-in.
Earlier, Werder Bremen came from behind to win 3-1 at 10-man Bayer Leverkusen in the other quarterfinal.
Javier ''Chicharito'' Hernandez fired the home side ahead with a penalty in the 22nd minute, after Alejandro Galvez fouled Stefan Kiessling.
But Santiago Garcia equalized from close range nine minutes later and Claudio Pizarro converted another penalty three minutes before the break, after Wendell was sent off for bringing down Fin Bartels.
Despite the red card, Leverkusen pushed hard for an equalizer. Felix Wiedwald did well to save from Kevin Kampl in the 80th.
Florian Grillitsch sealed the result on a counterattack two minutes later. Levin Oztunali found Pizarro, who was blocked by Jonathan Tah, only for Grillitsch to stab the ball into the unguarded net. The Bremen midfielder was offside, however.
Hakan Calhanoglu hit the post for Leverkusen in the 89th.