Efter 3-3 mot Portugal och 1-0 mot Iran väntade i kväll Marocko för Spanien i den sista gruppspelsmatchen, ett Marocko som redan var utslaget efter två raka 0-1-förluter.
Det var dock ett laddat Marocko som klev in på planen i Kaliningrad, och man tog också ledningen i den 14:e minuten när Khalid Boutaib kom fri med David De Gea och inte gjorde något misstag utan placerade in 1-0. Målet var Marockos första i detta VM.
Men marockanska ledningen stod sig dock bara knappa fem minuter, då Isco tryckte dit 1-1 i den 19:e minuten framspelad av Andrés Iniesta.
I den andra halvleken var Marocko mycket nära att ta tillbaka ledningen när Nordin Amrabat fick till ett skott som tog i insidan av David De Geas stolpe.
Några minuter senare var Spanien nära 2-1 när Isco fick iväg en nick mål, men en marockansk back kunde med liten marginal styra bort bollen med huvudet.
I stället var det Marocko som återtog ledningen i den 81:a minuten då Youssef En-Nesyri knoppade in 2-1 på en hörna.
Spanien såg ut att gå mot en förlust och en andraplats i grupp B, då Portugal samtidigt hade ledningen med 1-0 mot Iran - men på stopptid lyckades spanjorerna kvittera genom ett klackmål av Iago Aspas som godkändes efter VAR-granskning. Samtidigt fick Iran på stopptid en straff mot Portugal och kvitterade till 1-1 - ett mål som gjorde att Spanien i sista stund säkrade gruppsegern då man slutar före Portugal på fem poäng och fler gjorda mål.
- Totalt sett är jag nöjd. Jag är glad över att vi vann gruppen, vilket är vad vi ville. Vi hade kanske velat ha andra känslor i slutet av matchen än de vi hade, men i slutändan är vi nöjda med att gå vidare. Nu kommer sanningens ögonblick, och jag har fullt förtroende för det här laget, säger Isco efter matchen enligt Fifa.
Gruppsegern gör att Spanien ställs mot värdnationen Ryssland i åttondelsfinal, medan Portugal får möta Uruguay.
Lagens startelvor:
Spanien: De Gea - Carvajal, Pique, Ramos, Alba - Busquets, Thiago - Silva, Iniesta, Isco - Costa.
Marocko: El Kajoui - Dirar, Saïss, Da Costa, Hakimi - El Ahmadi, Boussoufa - N. Amrabat, Belhanda, Ziyech - Boutaïb.