The Netherlands came into the game as one of the favorites to go all the way in the tournament given the incredible quality in their camp. Frank de Boer's men enjoyed a superb run in the group stages, where they finished at the summit of Group C after winning all three of their games.
In stark contrast, Czech Republic progressed into the knockout stages as one of the four best third-place teams. They progressed from Group D with four points, level with second-placed Croatia.
In an end-to-end affair at the Ferenc Puskás Stadium, both sides created good chances but could not convert them in the first half. The teams headed into the half-time break with the score at 0-0.
Holes turned creator in the 80th minute as he squared the ball into the path of in-form striker Patrick Schick. The Bayer Leverkusen man tucked home his fourth goal of the tournament to end the Netherlands' Euro 2020 dreams.
Jaroslav Šilhavý's men have now claimed the first upset of the knockout stages. He will look for another strong showing from his troops in the quarterfinals.
The Netherlands player ratings
Maarten Stekelenburg - 5/10
The Dutch shot-stopper had a quiet evening until Matthijs de Ligt was sent off. There was nothing he could have done about both Czech Republic goals as they were excellently executed by Holes and Schick.
Stefan de Vrij - 6/10
de Vrij put in a largely assured outing playing on the left side of the Netherlands back three. However, he was left exposed by de Ligt’s dismissal and failed to stop the cross leading to Schick’s goal.
Matthijs de Ligt - 4.5/10
The Juventus man had a mixed spell at the heart of defense for the Netherlands. He produced a brave last-ditch tackle to dent Antonin Barak’s goal-bound effort and keep the tie level in the first half. However, he put his side in jeopardy by taking an early bath after needlessly handling the ball.
Daley Blind - 5/10
The former Manchester United defender struggled to keep up with the Czech Republic attackers down the right flank. Blind failed to recover and protect his backline in the build-up to the Czech’s second goal.
Denzel Dumfries - 7/10
Easily the best player in the game for the Netherlands. Dumfries had five touches in the opposition box in the first half, more than any other player. He showed his extreme work-rate as he covered lots of ground down the right flank throughout the match. Dumfries constantly marauded forward but was often let down by his lethargic frontmen.
Marten De Roon - 6/10
The Atalanta man put in a decent shift for the Netherlands. He provided solid defensive cover in midfield and was an extra man in defense following de Ligt's dismissal.
Frenkie de Jong - 6/10
De Jong was calm and collected at the center of the park for in the first half as he dictated the flow and tempo of the game for the Netherlands. The Barcelona midfielder also completed three out of his four take-ons. However, he was often easily out-muscled by the Czech Republic duo of Tomas Soucek and Holes in the second period.
Georginio Wijnaldum - 5/10
Wijnaldum struggled to hit his stride in the game and failed to impose his presence at the center of the park as he did in the group stages. He had just 26 touches all game and completed only 66% of his passes. Wijnaldum also failed to attempt a shot or create a chance throughout the match. It was an evening to forget for the Netherlands skipper.
Patrick van Aanholt – 5.5/10
The wing-back was a constant threat to the Czech Republic defenders down the left flank. Van Aanholt drove forward repeatedly to whip in dangerous crosses into the penalty area. However, he struggled to match that performance defensively as he was often beaten by his opponents.
Donyell Malen - 5.5/0
He had a blistering start to the game but gradually faded out as it progressed. Malen missed a glorious chance for the Netherlands in the second half as he fluffed his finish after going one-on-one with Czech goalkeeper Tomas Vaclik.
Memphis Depay - 5/10
The newly signed Barcelona superstar failed to make his mark on the game as he was starved of service up front. Memphis created a few chances for his side, but fizzled out in the second half as the Netherlands stumbled to a shock defeat.
Player Ratings for Netherlands substitutes
Quincy Promes - 5/10
Promes replaced Donyell Malen in the 57th minute following the sending off of Matthijs de Ligt. The Spartak Moscow man failed to impact the game and managed no shots on target.
Wout Weghorst - 5/10
The 28-year-old forward came on for Marten de Roon in the 73rd minute as de Boer opted for more firepower in attack. He finished without a shot on target and completed just 42% of his passes.
Jurrien Timber - 5/10
He replaced Daley Blind in the 81st minute but failed to make any telling contribution.
Steven Berghuis - 5/10
He came on for Patrick van Aanholt with nine minutes remaining on the clock but did not have any impact on the game.