Sancho's 77th-minute spotkick and a stoppage time strike from Haaland decided an otherwise turgid game in Dortmund's favour, giving them the first three points of their Group F campaign.

Having slumped to a 3-1 defeat away to Lazio in their opening game last week, the Bundesliga side were under pressure to pick up three points, with sporting director Michael Zorc warning that they could not afford "another slip".

Yet on a wet Wednesday evening in the west of Germany, Lucien Favre's side toiled without reward against a well-drilled Russian defence.

As Zenit sat back, Dortmund were starved of space up front and their attacks repeatedly fizzled out in a tangle of short passes.

"Guys, this is too complicated," shouted veteran centre-back Mats Hummels into the empty Signal-Iduna-Park midway through the first half.

Sancho orchestrated a couple of half-chances before the break, but neither Marco Reus nor Haaland could squeeze the ball past Mikhail Kerzhakov.

Reus struck the post early in the second half, while Kerzhakov palmed away a long-range effort from Dahoud on 66 minutes.

The home side were finally rewarded 11 minutes later as Thorgan Hazard was pulled down by Vyacheslav Karavaev.

Sancho, who has faced media criticism for his recent performances, made no mistake from 12 yards, coolly slotting the ball into the bottom corner in front of the famous, but now deserted 'Yellow Wall'.

Haaland sealed the three points in stoppage time, latching onto a flicked header from Jude Bellingham and drilling the ball underneath Kerzhakov.

kih/dj