A late Luka Modric penalty in extra time was saved by Kasper Schmeichel who, despite his heroics in the shootout, could not get his side over the line as the Vatreni progressed through.
Relive how the 90 minutes of action unfolded with Sports Mole's live text coverage below.
STARTING XI: Subasic; Vrsaljko, Vida, Lovren, Strinic; Brozovic, Rakitic; Rebic, Modric, Perisic; Mandzukic
SUBS: Livakovic, Corluka, Kovacic, Kramaric, Kalinic, Jedvaj, Bradaric, Caleta-Car, Badelj, Pjaca, Pivaric
STARTING XI: Schmeichel; Dalsgaard, Kjaer, Jorgensen, Knudsen; Braithwaite, Eriksen, Christensen, Delaney, Poulsen; Cornelius
SUBS: Krohn-Dehli, Vestergaard, Kvist, Jorgensen, Dolberg, Fischer, Lossl, Larsen, Lerager, Schone, Ronnow, Sisto
Zlatko Dalic: "Outwardly I must be calm, my experience as a coach has taught me that. For the past six months I've been trying to find the solutions to reach the basic objective and emerge from the group. That was a huge deal of pressure I put on myself. But then I said to myself this is not enough, because without me or with me this team is worth much more. This is not the final destination. However, I'm proud of what we've achieved over the past month."
Age Hareide: "I think you will see a different Denmark from what you have seen so far. We need to play differently to progress. We need to defend, but we also need to attack more than we've done in previous matches. There is always tension. Most of our players have not played the World Cup before. But this game will be different. We will release energy because we need to win. We will take a positive approach."
CROATIA SUBS: Livakovic, Corluka, Kovacic, Kramaric, Kalinic, Jedvaj, Bradaric, Caleta-Car, Badelj, Pjaca, Pivaric
DENMARK SUBS: Krohn-Dehli, Vestergaard, Kvist, Jorgensen, Dolberg, Fischer, Lossl, Larsen, Lerager, Schone, Ronnow, Sisto