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.
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.
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.
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 keeper from close range before trying an audacious backheel from the edge of the six-yard box that trickled past the post.
Schmeichel then made a brilliant stop with his feet from a late Farfan thunderbolt as Denmark clung on for a hard-fought victory.
Key Opta stats:
- Denmark have won four of their five opening games at World Cup tournaments, losing only against the Netherlands in 2010.
- Peru are winless in their last seven World Cup games (W0 D2 L5).
- Goalkeeper Kasper Schmeichel has kept a clean sheet in his last five appearances for Denmark. He’s gone 534 minutes without conceding at international level, with his last goal shipped coming via the Republic of Ireland’s Shane Duffy in November.
- Peru had 17 shots in this game, the most by a team without scoring so far in the 2018 World Cup.
- Christian Eriksen has scored (12) or assisted (5) 17 goals in his last 14 appearances for Denmark.