Borussia Dortmund needed a 78th-minute penalty from Jadon Sancho and a stoppage-time goal from Erling Haaland to beat visitors Zenit St Petersburg 2-0 in their Champions League Group F match on Wednesday.
The Germans, who lost their opener to Lazio, controlled the game from the start but carved out few chances before Vyacheslav Karavaev inexplicably wrestled Thorgan Hazard to the ground for Sancho to score from the spot.
Haaland added a second in stoppage time with a powerful run.
Borussia are on three points with Zenit bottom of the group after two defeats in two games. Club Brugge and Lazio are top on four points.
The hosts, buoyed by their derby win over Schalke 04 on the weekend, had possession from the start but could not break past a deep-lying Zenit.
Norwegian striker Haaland had their best chance of the first half when his powerful shot flew just wide after captain Marco Reus missed two good chances of his own.
After pressure straight after the restart, Dortmund quickly ran out of ideas on how to crack open the Russian defence.
With Zenit gradually growing bolder, it looked like the Germans would have to settle for a draw until Hazard was brought down and Sancho sent the keeper the wrong way and Haaland sealed the win.
Dortmund next travel to Club Brugge on November 4 while Zenit host Lazio.