Spanien var redan inför matchens avspark klart för åttondelsfinal. Kroatien behövde en poäng för att vara säkert på avancemang. Laget som slutade tvåa skulle få möta Italien.
Alvaro Morata tog sju minuter på sig- sedan hade han gett Spanien en 1-0-ledning. Kroatien blev utrullade och Morata blev serverad av Cesc Fabregas bara metern från mål.
Spanskt kaos uppstod i den 13:e minuten. David de Gea dröjde onödigt länge med bollen vid fötterna, vilket gjorde att spanjoren till slut fick panikrensa. Ivan Raktic fick chansen att lobba in bollen i mål med en de Gea ur position - men bollen tog snöpligt nog i ribban-mållinjen och ut.
Bara minuter innan halvtidspausen kvitterade Nikola Kalinic för Kroatien. Anfallaren var påpassligt framme vid den främre stolpen på ett inlägg av Ivan Perisic - och smekte kontrollerat in bollen med yttersidan på volley.
Därmed stannade det mäktiga spanska rekordet på hållen nolla under EM-spel på 735 minuter.
Sergio Ramos var oerhört nära att sätta ett ledningsmål för spanjorerna i den 67:e minuten när han nådde högst på ett inlägg i boxen. Nicken gick tätt utanför stolpen.
Några minuter senare fick Ramos ännu en chans att ge Spanien ledningen när laget fick en straff. Sergio Ramos tog hand om den - men Danijel Subasic i Kroatienmålet räddade efter att backen placerade den mitt i mål. Subasic var rejält långt ut från linjen när straffräddningen genomfördes.
Bara minuter innan slutsignalen, i den 87:e minuten, tog Kroatien plötsligt ledningen med 2-1. Ivan Perisic kom fram på kanten av straffområdet och tryckte in ett distinkt skott vid främre stolpen.
Slutsignalen ljöd - och 2-1-resultatet innebar att både Spanien och Kroatien tog sig till slutspel - där Spanien möter Italien.
Resultatet innebar även att Nordirland tog sig till slutspelet - i sin mästerskapsdebut.
Kroatiens startelva: Danijel Subasic - Darijo Srna, Vedran Corluka, Tin Jedvaj, Sime Vrsaljko - Marko Rog, Milan Badelj - Ivan Perisic, Ivan Rakitic, Marko Pjaca - Nikola Kalinic
Spaniens startelva: David de Gea - Juanfran, Gerard Pique, Sergio Ramos, Jordi Alba - Cesc Fabregas, Sergio Basquets, Andres Iniesta - David Silva, Alvaro Morata, Nolito
Se höjdpunkterna i spelaren ovan.