If recent history were any judge, Italy's chances against Croatia in its final group-stage match were not at all encouraging. And to reach the Round of 16, Italy needed a victory or a draw, while the Croatians had to win to get through to the knock-out stages.
The Azzurri had not beaten the Croats in its eight previous matches, stumbling to five draws and three defeats. So, coach Luciano Spalletti shuffled things up, starting Mateo Retegui in attack instead of Gianluca Scamacca, confirming the formation adopted in the recent matches against Albania and Spain.
From the start, the Croatians took possession and thanks to the high technique of its midfielders they were able to control the pace of the match, evading the of pressing from Italy.
The first conclusion towards goal was made by the Croatian Luka Sucic whose left-footer was ticketed for the top corner of the goal, but Gianluigi Donnarumma made an excellent intervention to deflect the ball around the post.
Shortly afterwards the Azzurri also went in for a shot with a header from Lorenzo Pellegrini which ended clearly outside the opponent's goal.
Shortly afterwards, a cross from Giovanni Di Lorenzo found Retegui in the center of the penalty area after, but the striker was unable to coordinate well, wasting an opportunity to find the goal.
Italy subsequently had a great opportunity to score with an important cross from Nicolò Barella who found Alessandro Bastoni free in the penalty area but his header was blocked by Dominik Livakovic.
After this favorable phase for the Azzurri, the Croatians started attacking again without managing to make themselves dangerous in the offensive zone.
A very tactical first half thus ended at 0-0, characterized by both teams' fear of making a mistake that could not be remedied quickly.
The second half restarted with a substitution for Italy. Midfielder Davide Frattesi came on and replaced Lorenzo Pellegrini.
Croatia also made a substitution, bringing on Ante Budimir for Mario Pasalic, so as to have a physical striker to find in the final metres.
Just like the first half, Croatia started in a more intense way, taking control of the ball in midfield.
In the 53rd minute, after a VAR review, match referee Danny Makkelie decided to award a penalty in favor of Croatia due to a handball from substitute Frattesi on a shot towards goal by Andrej Kramaric.
Captain Luka Modric took the penalty shot, but Donnarumma was up to the task and the Paris St Germain keeper dived low to his left and blocked the spot kick.
Despite wasting a great opportunity, Modric made up for it just 33 seconds later, pouncing on a loose ball after another spectacular save by Donnarumma, and burying it in the net.
Spalletti immediately tried to get his players to react, inserting Federico Chiesa for a disappointing Federico Dimarco.
Shortly after, Italy came close to equalising off a corner, with a header from defender Alessandro Bastoni that skimmed over the crossbar.
In the meantime, Mateo Kovacic and Modric were removed to make room for fresh resources.
Azzurri hopes dwindled as time ticked off. Spaletti knew if Italy finished third in the group, they would have had to wait for the results of other groups to see if they qualified among the best third-place teams to reach a playoff.
The Italy coach brought in attackers Gianluca Scamacca and Mattia Zaccagni.
Italy created chances – Federico Chiesa sent in a great cross without finding a teammate.
With just 40 seconds of the 8 added minutes remaining, defender Riccardo Calafiori carried through the middle of the field, took a return pass and dribbled toward the box, catching the attention of Croatia's defense. He then promptly passed the ball out wide to the unmarked Zaccagni whose first-time shot curled around Dominik Livakovic and inside the far post.
With the draw, the defending champs finished with 4 points while Croatia was left with just 2 points. As such, Italy have advanced to the next round where they will face Switzerland on Saturday at the Olympiastadion in Berlin.