Romelu Lukaku missed a string of late chances as Belgium crashed out of the World Cup in the group stage after a 0-0 draw with Croatia on Thursday which sent the 2018 runners-up into the knockout phase.
Croatia had a penalty award controversially cancelled by VAR early in a largely uneventful first half.
The introduction of Lukaku at the interval changed the game, but he was guilty of three dreadful misses as Zlatko Dalic's side rode their luck to hold on.
Croatia progressed as runners-up in Group F behind winners Morocco who beat Canada 2-1 to also qualify for the last 16.
Belgium, the world's second-ranked side, saw their run of reaching at least the quarter-finals at four straight major tournaments come to an abrupt end.
Roberto Martinez's men managed just one goal in the tournament in a fortunate opening 1-0 win over Canada.
Martinez dropped captain Eden Hazard to the bench as one of four changes which also saw Leandro Trossard and Dries Mertens start for the first time in Qatar.
The build-up to the match had been dominated by rumours of an altercation between senior Belgian players, involving Eden Hazard, which Martinez described as "fake news".
Croatia almost took the lead inside the first 10 seconds, as the ball was played forward to Ivan Perisic after kick-off and the Tottenham man cut inside and drilled a shot just wide of the far post.
The likelihood of Belgium needing to win was increased when Morocco scored an early goal across Doha. Yannick Carrasco had a chance to open the scoring but his shot was blocked.
Mertens curled over after a trademark Kevin De Bruyne run and pass, before Croatia were awarded a penalty seconds later when Carrasco tripped Andrej Kramaric in the box.
But the decision was overturned following a lengthy VAR check which decided that a tiny fraction of Dejan Lovren's shoulder was offside.
Desperate for a goal after a first half in which neither side mustered a shot on target, Martinez sent on Lukaku, Belgium's record scorer, for Mertens at half-time.
They immediately carried more threat, with Lukaku, who struggled with injury in the build-up to the tournament, heading straight at Croatia goalkeeper Dominik Livakovic.
Thibaut Courtois was then called into action for the first time, stretching to tip over Mateo Kovacic's curling effort as the game opened up.
That also suited the Croatian attackers though and Courtois had to twice get down to keep out low shots from Marcelo Brozovic and Luka Modric.
Belgium should have taken the lead on the hour mark.
Carrasco almost bundled the ball in but was denied by Livakovic, before Lukaku contrived to hit the post with the goal gaping on the rebound.
Lukaku was guilty of an even worse miss two minutes later, heading over an empty net from six yards out, although replays suggested the ball may have been out of play when De Bruyne crossed it in.
Martinez also threw on Thorgan Hazard, Youri Tielemans and Jeremy Doku as Belgium searched for that all important goal.
Lukaku saw another chance come and go in the 87th minute, deflecting the ball wide from Thomas Meunier's volley.
The striker, on loan at Inter Milan from Chelsea, still had another golden opportunity to be the hero, but he opted to chest the ball towards the open net from three yards out and directed it into the arms of Livakovic.
Meanwhile, Morocco powered into the last 16 of the World Cup for the first time in 36 years with a 2-1 victory over eliminated Canada.
Goals from Hakim Ziyech and Youssef En-Nesyri ensured the North Africans finished top of Group F ahead of 2018 World Cup runners-up Croatia.
Morocco, who last reached the knockout stages of the World Cup in 1986, will face the runners-up from Group E in the last 16. (AFP)