Goals from Thomas Delaney and Kasper Dolberg gave Denmark a 2-1 win over Czech Republic on Saturday evening as the Danes booked their place in Euro 2020's last four.
Kasper Hjulmand's side shocked their opponents inside five minutes, as Thomas Delaney leaped to meet Jens Strryger Larsen's corner completely unchallenged, heading into the back of the net.
Both teams went on to pose problems for each other throughout the first period but it was eventually the Danes who doubled their advantage two minutes before half time. Joakim Maehle produced an incredible cross with the outside of his right boot for Kasper Dolberg to finish clinically at the far post.
Czech Republic came out for the second half fighting and their pressure paid off within five minutes of the restart. Vladimir Coufal's accurate cross was met by Patrik Schick, who directed the ball perfectly into Kasper Schmeichel's bottom corner to draw level with Cristiano Ronaldo as the tournament's top scorer.
That goal, however, proved to be a consolation. The Czechs threw all they could to grab a second and take the tie to extra time, but a solid Danish side comfortably saw out the 2-1 victory to seal a place in the last four of Euro 2020, with their semi-final to be played at Wembley.
Now, let's see how the players rated.
CZECH REPUBLIC PLAYER RATINGS
1. Goalkeeper & Defenders
Tomas Vaclik (GK) - 6/10 - Always sharp off his line and did well to close down angles. Made several good stops but had little chance with
Vladimir Coufal (RB) - 7/10 - Not the easiest night defending against Denmark's left side but produced great quality when venturing forward, managing three key passes. Crossed well to assist Schick's early second-half strike.
Ondrej Celustka (CB) - 5/10 - Made a couple of good interventions at important moments and showed his strength on occasion but struggled to contain Denmark's fluid front three.
Tomas Kalas (CB) - 6/10 - Remained composed for the most part, staying alive to dangerous balls into the box and making seven interventions and winning five aerial battles.
Jan Boril (LB) - 5/10 - Had a few shaky moments and looked unsure when faced with bright runners.
Tomas Holes (CM) - 6/10 - Another considered performance. Made intelligent runs either in behind or arriving late into the box and was always willing to put in a tasty challenge to break up play, winning possession four times. Strangely substituted at the break.
Tomas Soucek (CM) - 5/10 - Always provided a danger from set pieces (of course) but never quite managed to get his head on any. Didn't do enough to screen his back line and left a lot of space between the lines.
Antonin Barak (AM) - 6/10 - Looked threatening when running with the ball and seemed the most likely to make something happen in a Czech shirt. Smooth in possession, creative and was excellent with his set piece delivery.
Lukas Masopust (RW) - 6/10 - Very sharp when dribbling at his opposition and produced a couple of moments that were worthy of snatching a goal. Wasn't consistent enough to really make a lasting impact, though, and was harshly taken off at the interval.
Patrik Schick (ST) - 7/10 - Good movement and link up play, while also providing a threat running with the ball. A very elegant and composed player, and finished nicely to get his side back into the game.
Petr Sevcik (LW) - 4/10 - Pressed well and showed good energy but was far too passive in possession - practically disappeared in the second half.
Michael Krmencik (ST) - 7/10 - Immediate impact as he joined Schick up top. Put himself about, went for loose balls and caused panic at the back.
Jakub Jankto (CM) - 7/10 - Introduced energy into midfield and his drive from deep set the tempo for the Czech's intense start to the second half.
Jakub Brabec (CB) - 6/10
Matej Vydra (ST) - 5/10
Vladimir Darida (LW) - 5/10
DENMARK PLAYER RATINGS
5. Goalkeeper & Defenders
Kasper Schmeichel (GK) - 6/10 - Not called upon that much but produced a big save in the first half, denying Holes. Couldn't do anything about Schick's clever finish.
Andreas Christensen (CB) - 7/10 - Distributed the ball nicely and stayed alert to his opposition, winning back possession four times.
Simon Kjaer (CB) - 8/10 - A huge presence in this Denmark side. Played a subtle role in the box for the opener and covered his defensive colleagues brilliantly, making four ball recoveries and eight clearances.
Jannik Vestergaard (CB) - 7/10 - A good aerial presence and was always quick to step out of defence to stifle Czech attacks, making nine interventions. Played a lovely ball down the flank to set up Maehle's dreamy assist.
6. Wing-backs & Midfielders
Jens Stryger Larsen (RWB) - 7/10 - Great energy to surge upfield and delivered real quality. He made full use of his side's corners, notably crossing to assist Delaney's opener.
Pierre-Emile Hojbjerg (CM) - 7/10 - Marshalled the area in front of the back three well and generally screened things to good effect with five ball recoveries. Recycled possession well throughout.
Thomas Delaney (CM) - 8/10 - Continuously broke up play and set his side off on the attack within an instant. Tireless worker for the team and made them tick nicely. Got his reward with the opening goal, which he took well.
Joakim Maehle (LWB) - 8/10 - This guy can pass. Picked his moments to surge forward, aware of Coufal's quality - and picked them perfectly. Registered two key passes, including that ridiculous cross for the second. Gorgeous.
Martin Braithwaite (RW) - 6/10 - Didn't stop chasing lost causes and always closed down Czech defenders. He ran his socks off but couldn't quite come up with a final product.
Kasper Dolberg (ST) - 8/10 - Sharp from the outset with his link up play and movement. Finished well as he met Maehle's cross to make it 2-0.
Mikkel Damsgaard (LW) - 7/10 - Floated around nicely, helping to open up the game. Picked up little pockets of space well, made intelligent runs in behind and was a threat throughout. Also put in a shift at the other end, making four ball recoveries before coming off on the hour.
Yussuf Poulsen (ST) - 7/10
Christian Norgaard (CM) - 6/10
Daniel Wass (RWB) - 6/10
Joachim Anersen (CB) - 6/10
Mathias Jensen (CM) - 6/10