Hosts Germany progressed into the Euro 2024 quarter-finals thanks to a second-half Kai Havertz penalty, and a second goal from Jamal Musiala.
However, Denmark will feel aggrieved about their exit after Joachim Andersen thought he had given his country a 48th-minute lead, only for VAR to rule it out for offside.
Just two minutes after seeing his goal chalked off, Andersen was then judged by VAR to have handled a cross into the box and Havertz dispatched the spot kick.
Rasmus Hojlund had several good chances in both halves and was denied an equaliser after capitalising on a defensive error but firing at goalkeeper Manuel Neuer.
Germany sealed their quarter-final spot as Nico Schlotterbeck sent a floated ball into the path of Musiala who calmly fired home.
The home nation could have added to the score-line late on, but were met by a determined Kasper Schmeichel performance.
Germany will now face either Spain or Georgia in the quarter-finals.
Talking Point – Germany show frailties despite booking place in last eight
Denmark will feel that they could have beaten Germany after falling foul to VAR decisions and some lacklustre finishing.
Hojlund should have given Denmark the lead before the break after capitalising on a defensive error but fired into the side-netting.
Moments later a quick counter-attack opened up the German defence, but the Manchester United forward was denied by goalkeeper Neuer.
Denmark may have rued those misses only to have Andersen’s 49th-minute goal ruled out for offside.
Hojlund had one last chance but fired at the goalkeeper, moments before Germany were out of sight with a second goal.
Player of the match – Kai Havertz (Germany)
The Arsenal forward led the line well for Germany and held up play to allow his team-mates into the game.
Havertz slammed home the penalty which was the turning point in the game.
The 25-year-old could have added to his tally but chipped wide after goalkeeper Schmeichel put him under pressure.
Player Ratings
Germany: Neuer 8, Kimmich 7, Rudiger 7, Schlotterbeck 7, Raum 6, Andrich 6, Kroos 7, Sane 8, Gundogan 7, Musiala 8, Havertz 8
Subs: Anton 6, Can 6, Fullkrug 6, Wirtz 7, Henrichs 6
Denmark: Schmeichel 8, Andersen 7, Vestergaard 6, Christensen 6, Bah 7, Delaney 7, Hojbjerg 7, Maehle 6, Skov Olsen 6, Hojlund 6, Eriksen 7
Subs: Bruun Larsen 6, Kristiansen 6, Norgaard 6, Poulsen 6, Wind 6
Match Highlights
4’ – SCHLOTTERBECK HAS GOAL CHALKED OFF
Schlotterbeck believes that he had scored the opening goal after rising high to head home a corner. However, referee Michael Oliver disallows the goal.
Kimmich is judged to have blocked the marker who was trying to follow Schlotterbeck into the box. The Germans will feel that was very harsh.
7’ – SAVES BY SCHMEICHEL
A powerful effort by Kimmich is heading towards the Denmark goal. However, Schmeichel is there to make a fine save.
From the following corner the Danish goalkeeper is forced into action again to deny a Schlotterbeck header.
Two rumbles of strong thunder and a flash of lightning is enough for referee Michael Oliver. He calls a halt to proceedings and the teams leave the field.
42’ – HOJLUND MISSES GOLDEN CHANCE
Schlotterbeck is caught on the ball deep inside the German box handing a golden chance to Hojlund who from a tight angle fires into the side-netting.
He should have done better.
49’- ANDERSEN GOAL DISSALOWED
A Denmark free-kick is recycled back into the box and flicked into the path of Andersen who fires past the goalkeeper.
However, VAR is checking the goal for an off-side decision. Michael Oliver then disallows the goal.
53’ – GOAL! GERMANY 1 (HAVERTZ) DENMARK 0
Havertz slams his penalty into the bottom corner and Germany have taken the lead. Moments before they could have been behind.
It was a harsh penalty for a handball against Andersen who had a goal disallowed by VAR moments before.
68’ – GOAL! GERMANY 2 (MUSIALA) DENMARK 0
A long ball forward is straight into the path of Musiala who fires across the goalkeeper to double his side’s lead