BERLIN — Raphaël Guerreiro scored late for Borussia Dortmund to seal a hard-fought 2-0 Bundesliga win over Union Berlin on Wednesday and maintain its Champions League qualification hopes.

Marco Reus’ first-half goal set Dortmund on its way to a win that keeps it four points behind Eintracht Frankfurt in the last qualification place for the Champions League with four games of the season remaining.

But Union left the result in doubt until the 88th minute, when Julian Brandt set up Guerreiro to score on a counterattack.

Union forward Markus Ingvartsen struck the crossbar in the first minute and the visitors maintained their early pressure.

Dortmund’s breakthrough in the 25th minute had more than a touch of fortune.

Union goalkeeper Andrea Luthe was penalized for bringing down Reus, though replays suggested it was a dive. Still, the penalty was given after a VAR check.

“There was no clear contact for me to bring him down,” Luthe said. “I knew that straight away.”

Luthe reacted by saving Erling Haaland’s penalty, and his effort from the rebound, before defender Robin Knoch’s attempted clearance off the line went in off the inrushing Reus.

Luthe made another good save to deny Haaland again shortly afterward.

Union struck the goal-frame again midway through the second half, when Marwin Hitz got his fingertips to Max Kruse’s free kick.

Haaland endured a frustrating game, foiled by Luthe again in the 86th, before he hit the side netting in injury time.

Third-place Wolfsburg stayed on track for Champions League qualification with a 3-1 win at Stuttgart. Wolfsburg is five points ahead of Dortmund.

Mainz defeated relegation rival Werder Bremen 1-0 away to overtake the home side and move five points clear of Hertha Berlin in the relegation zone.

Hertha has played two games less. Hertha was supposed to host Freiburg earlier Wednesday, but three of its games were called off as the team is in quarantine for two weeks following a coronavirus outbreak at the club.

Also, Hoffenheim came from two goals down at half time to beat Borussia Mönchengladbach 3-2.

Bremen's American forward Josh Sargent had what looked like a good goal ruled out through VAR before the break.

Mainz goalkeeper Robin Zentner was unable to control the ball under pressure from Kevin Möhwald and Sargent scored off the rebound. But the goal was ruled out when Möhwald was penalized for an apparent foul on the goalkeeper when poking the ball away.

“The ball is free. The (goalkeeper's) hand isn’t on it,” Bremen coach Florian Kohfeldt said. “Even with the video images I don’t see a foul,”

Adam Szalai’s 16th-minute goal was enough for the visitors to stretch Bremen’s losing streak to six games.

___

More AP soccer: https://apnews.com/hub/soccer and https://twitter.com/AP_Sports

___

Ciarán Fahey on Twitter: https://twitter.com/cfaheyAP