Yussuf Poulsen bounced back from conceding a first-half penalty to score the decisive goal in Demark's 1-0 victory over Peru in their World Cup Group C opener.
The RB Leipzig forward was deemed to have tripped Christian Cueva in the box when referee Bakary Gassama consulted VAR, but the Peru midfielder skied his spot-kick and left the field in tears at the end of a tense opening period.
Denmark settled into the game after the interval and the talismanic Christian Eriksen provided Poulsen with a chance to turn his evening around in the 59th minute, and the 24-year-old made no mistake.
Denmark go in front thanks to Poulsen!— FOX Soccer (@FOXSoccer) June 16, 2018
Peru will be kicking themselves for not taking advantage of their opportunities. pic.twitter.com/jjQYBDcDEm
Paolo Guerrero came on from the bench following a successful appeal to suspend his 14-month drug ban cleared him to feature, but he could not turn the game in Peru's favour.
Kasper Schmeichel denied Jefferson Farfan brilliantly with six minutes to go as Ricardo Gareca's men gave a good account of themselves in their first World Cup match for 36 years, entertaining the hordes of South American fans who packed the Mordovia Arena.
France await Peru next, while Denmark will go into their game against Australia in confident mood after collecting three points.
Orlando City's Yoshimar Yotun lashed the ball into Schmeichel's midriff from 25 yards as Peru made a positive, energetic start to the game and Edison Flores lifted a powerful shot over the crossbar from just outside the box.
Andre Carrillo surged towards the Denmark box in the 13th minute and cut inside to curl a low drive towards the bottom-left corner, only for Schmeichel to pull off a diving save.
Denmark began to dominate possession but it was not until the 27th minute that they attempted a shot on goal, Thomas Delaney launching the ball over.
Peru promptly countered when Carrillo's weighted pass put Farfan through on goal and Simon Kjaer had to rush across to dispossess the striker.
Denmark midfielder William Kvist was taken off on a stretcher after a sustaining a blow to the ribs in a challenge with Farfan, and disaster almost struck for Age Hareide's men when Cueva was brought down in the penalty area by Poulsen.
The referee pointed to the spot upon reviewing video footage and Cueva blazed over, much to the dismay of Peru's sizable travelling support.
Cueva's penalty was ... not close. pic.twitter.com/djigVYt9EE— FOX Soccer (@FOXSoccer) June 16, 2018
Denmark looked more assured after the restart and pushed forward in search of a breakthrough. It arrived just before the hour mark when Eriksen ran through the middle and fed Poulsen, who slotted the ball low to the left of Peru goalkeeper Pedro Gallese.
Peru piled forward and Flores drew a fine, one-handed save from Schmeichel, before the winger was replaced by Peru's all-time leading goal-scorer Guerrero in the 62nd minute.
The veteran forward quickly tested Schmeichel, heading directly at the goalkeeper from close range before trying an audacious backheel from the edge of the six-yard box that trickled past the post.
Paolo Guerrero was so, so close to equalizing. pic.twitter.com/oSn1XwNKUY— FOX Soccer (@FOXSoccer) June 16, 2018
Schmeichel then made a brilliant stop with his feet from a late Farfan thunderbolt as Denmark clung on for a hard-fought victory.