Borussia Dortmund got its misfiring Champions League campaign into gear on Wednesday as it beat a defensive Zenit St. Petersburg 2-0 in heavy rain thanks to goals from Jadon Sancho and Erling Haaland.

Dortmund was looking to bounce back from last week's 3-1 loss at Lazio but struggled to break through Zenit's compact defense until Vyacheslav Karavaev gave away a penalty converted by Sancho.

Haaland added a second on the counter in stoppage time for the Norwegian's 12th goal in 10 career Champions League games. Haaland was set free behind the Zenit defensive line by a header from 17-year-old Jude Bellingham and sent a precise shot between goalkeeper Mikhail Kerzhakov's legs.

Dortmund's Erling Haaland scores his side's second goal during the Champions League group F soccer match between Borussia Dortmund and Zenit Saint Petersburg in Dortmund, Germany, Wednesday, Oct. 28, 2020. (AP PhotoMartin Meissner, Pool)

Dortmund's Erling Haaland scores his side's second goal during the Champions League group F soccer match between Borussia Dortmund and Zenit Saint Petersburg in Dortmund, Germany, Wednesday, Oct. 28, 2020. (AP PhotoMartin Meissner, Pool)

“That's football and we knew the chances would come,” Haaland told broadcaster Sky. “You saw we had the ball a lot and we had to be patient and not to rush things.”

Dortmund is third in Group F, a point behind Lazio and surprise challenger Brugge, who drew 1-1 on Wednesday. Dortmund has two games against Brugge next. Zenit is last after losing its opening game to Brugge, and already close to extending its five-year run without qualifying for the knockout stages.

Haaland came close to scoring when he rifled a low shot wide in the 42nd minute off a through-ball from Sancho. Gio Reyna and Mahmoud Dahoud had their own narrow misses from speculative long-range shots, while Zenit goalkeeper Kerzhakov stopped an effort from Marco Reus which may have been off target.

CORRECTS NAME OF PHOTOGRAPHER - Dortmund's Jadon Sancho celebrates after scoring his side's opening goal during the Champions League group F soccer match between Borussia Dortmund and Zenit Saint Petersburg in Dortmund, Germany, Wednesday, Oct. 28, 2020. (AP PhotoMartin Meissner, Pool)

CORRECTS NAME OF PHOTOGRAPHER - Dortmund's Jadon Sancho celebrates after scoring his side's opening goal during the Champions League group F soccer match between Borussia Dortmund and Zenit Saint Petersburg in Dortmund, Germany, Wednesday, Oct. 28, 2020. (AP PhotoMartin Meissner, Pool)

Zenit's defensive tactics — likened to parking “two buses” by Dortmund sporting director Michael Zorc — left the German team looking somewhat toothless. That all changed when a cross came in for substitute Thorgan Hazard and Karavaev opted to wrestle the Belgian away from the ball. Sancho stepped up to take the 79th-minute penalty, sending Kerzhakov the wrong way.

Zenit created few chances and showed little ambition, even after Dortmund had taken the lead. A first-half aerial challenge by Sebastian Driussi on goalkeeper Roman Bürki was one of the few highlights, but ended with the ball flying harmlessly over the bar.

Dortmund has won three of its last four games without conceding a goal, with the defeat to Lazio the exception. That recent form has helped stabilize the team after a 3-2 German Super Cup loss to Bayern Munich and a Bundesliga defeat to Augsburg.

Dortmund's Jadon Sancho, second left, celebrates after scoring his side's opening goal from the penalty spot during the Champions League group F soccer match between Borussia Dortmund and Zenit Saint Petersburg in Dortmund, Germany, Wednesday, Oct. 28, 2020. (AP PhotoMartin Meissner, Pool)

Dortmund's Jadon Sancho, second left, celebrates after scoring his side's opening goal from the penalty spot during the Champions League group F soccer match between Borussia Dortmund and Zenit Saint Petersburg in Dortmund, Germany, Wednesday, Oct. 28, 2020. (AP PhotoMartin Meissner, Pool)

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