A victory would have sent the Croatians through to the last 4 and an automatic birth at the World Cup in Chile, but now they will have to win a playoff match to qualify.
Karlo Majić scored Croatia’s only goal 5 minutes before half-time with a neat flick after Davor Lovren shot from outside the box following a Croatia corner. Belgium were let back into the match in the 53rd minute after a defensive error allowed Ismail Azzaoui to run through and chip Croatian keeper Adrian Šemper to level the match.
Croatia captain Nikola Moro missed the only penalty of the shoot-out.
Germany face Spain, England play Russia, and France take on Italy in the remaining quarter-finals.
CROATIA: Šemper, Hudećek, Sosa, Kalaica, Soldo, Gjira (70′ Zenko), Brekalo, Djurasek (90′ Halilov), Moro(C), Lovren, Majić (65′