Belgium have been knocked out of the World Cup at the group stage as Croatia progressed at their expense with a goalless draw in Qatar.
Roberto Martinez's side, who finished third in Russia four years ago and are ranked second in the world, have had a disappointing tournament with just one win and one goal in their three matches.
They produced another lacklustre display against Croatia despite knowing victory was necessary to progress to the last 16.
Substitute Romelu Lukaku had numerous chances in the second half but his failure to convert any sealed his country's fate.
Lukaku, searching for sharpness following injury, hit the post from in front of goal, poked an effort wide when well-placed and reacted too slowly when the ball hit him in the six-yard box in stoppage time.
Croatia, finalists in 2018, got the point they needed to progress from Group F as runners-up, with Morocco taking top spot thanks to a 2-1 win against Canada.
Zlatko Dalic's side will face the winners of Group E - which is currently Spain - in the last 16.
Belgium players fell to the turf at full-time as their supporters behind the goal politely applauded them off the pitch.
Lukaku, who replaced Dries Mertens at half-time, came into the game with intent and immediately brought energy and purpose to his side.
But his missed opportunities in the second half proved costly, with each one bringing an audible collective groan from the stands and the on-loan Inter Milan striker punched the dugout in frustration after the final whistle.
Croatia were not especially convincing - their most threatening moment was a first-half penalty award being ruled out by VAR because of an offside infringement in the build-up - but did enough to secure progression.
They did however look a level below what they showed to reach the final in Russia four years ago and their celebrations were fairly subdued after scraping through.
'Golden generation' fall at first hurdle
This Belgium side were ranked number one in the world in February and their collection of star names have been fancied to do well in recent tournaments - but this is the latest in a list of disappointments for their supporters.
On the biggest stages, their 'golden generation' has not lived up to expectations, failing to reach a major final despite their array of talented players.
Belgium, whose key players are approaching the latter stages of their careers, probed for a breakthrough at Ahmad Bin Ali Stadium but even Kevin de Bruyne - captain in place of the dropped Eden Hazard - could not inspire his side.
Croatia had the best chances in a poor first half as Ivan Perisic fired wide while Andrej Kramaric thought he had won a penalty following a foul by Yannick Carrasco, but the decision was cancelled by VAR for offside.
Lukaku's introduction had an immediate impact as he pounced on a rebound from Carrasco's shot but struck it against the inside of the post.
Real Madrid midfielder Luka Modric went close when his poked effort was held by club-mate Thibaut Courtois in a rare Croatia second-half attack.
But the biggest chances fell Lukaku's way, not least in the closing minutes when he deflected a cross wide then was slow to react and allowed the ball to hit his body and fall tamely into the goalkeeper's arms from about two yards out.
It was indicative of his country's lacklustre campaign and Belgium cannot have many complaints at their failure to progress to the knockout stage.
Player of the match
GvardiolJosko Gvardiol
Croatia
Squad number20Player nameGvardiol
Squad number10Player nameModric
Squad number8Player nameKovacic
Squad number4Player namePerisic
Squad number11Player nameBrozovic
Squad number19Player nameSosa
Squad number22Player nameJuranovic
Squad number9Player nameKramaric
Squad number6Player nameLovren
Squad number16Player namePetkovic
Squad number15Player namePasalic
Squad number14Player nameLivaja
Squad number7Player nameMajer
Squad number1Player nameLivakovic
Belgium
Squad number17Player nameTrossard
Squad number1Player nameCourtois
Squad number25Player nameDoku
Squad number7Player nameDe Bruyne
Squad number21Player nameCastagne
Squad number2Player nameAlderweireld
Squad number5Player nameVertonghen
Squad number8Player nameTielemans
Squad number19Player nameDendoncker
Squad number16Player nameT Hazard
Squad number15Player nameMeunier
Squad number6Player nameWitsel
Squad number11Player nameCarrasco
Squad number14Player nameMertens
Squad number10Player nameE Hazard
Squad number9Player nameLukaku
Line-ups
Croatia
Formation 4-3-3
1Livakovic
22Juranovic6Lovren20Gvardiol19Sosa
10Modric11Brozovic8Kovacic
9Kramaric14Livaja4Perisic
1Livakovic22Juranovic6Lovren20Gvardiol19Sosa10Modric11Brozovic8KovacicSubstituted forMajerat 90+2'minutes9KramaricSubstituted forPasalicat 64'minutes14LivajaSubstituted forPetkovicat 64'minutes4PerisicSubstitutes
2Stanisic3Barisic5Erlic7Majer12Grbic13Vlasic15Pasalic16Petkovic17Budimir18Orsic21Vida23Ivusic24Sutalo25Sucic26JakicBelgium
Formation 4-2-3-1
1Courtois
15Meunier2Alderweireld5Vertonghen21Castagne
19Dendoncker6Witsel
7De Bruyne14Mertens11Carrasco
17Trossard
1Courtois15MeunierSubstituted forE Hazardat 87'minutes2Alderweireld5Vertonghen21Castagne19DendonckerBooked at 66minsSubstituted forTielemansat 72'minutes6Witsel7De Bruyne14MertensSubstituted forLukakuat 45'minutes11CarrascoSubstituted forDokuat 72'minutes17TrossardSubstituted forT Hazardat 59'minutesSubstitutes
3Theate4Faes8Tielemans9Lukaku10E Hazard12Mignolet13Casteels16T Hazard20Vanaken22De Ketelaere23Batshuayi24Openda25Doku26DebastReferee:Anthony TaylorAttendance:43,984Live Text
Match ends, Croatia 0, Belgium 0.
Second Half ends, Croatia 0, Belgium 0.
Foul by Youri Tielemans (Belgium).
Bruno Petkovic (Croatia) wins a free kick in the defensive half.
Substitution, Croatia. Lovro Majer replaces Mateo Kovacic.
Attempt saved. Romelu Lukaku (Belgium) with an attempt from very close range is saved in the centre of the goal. Assisted by Thorgan Hazard with a cross.
Jérémy Doku (Belgium) wins a free kick on the left wing.
Foul by Mario Pasalic (Croatia).
Substitution, Belgium. Eden Hazard replaces Thomas Meunier.
Attempt missed. Romelu Lukaku (Belgium) left footed shot from very close range is close, but misses to the right. Assisted by Thomas Meunier.
Attempt missed. Thomas Meunier (Belgium) right footed shot from the right side of the box misses to the left.
Corner, Belgium. Conceded by Josko Gvardiol.
Foul by Timothy Castagne (Belgium).
Luka Modric (Croatia) wins a free kick in the defensive half.
Offside, Croatia. Bruno Petkovic tries a through ball, but Ivan Perisic is caught offside.
Attempt blocked. Jan Vertonghen (Belgium) header from the centre of the box is blocked. Assisted by Thorgan Hazard with a cross.
Corner, Belgium. Conceded by Borna Sosa.
Foul by Youri Tielemans (Belgium).
Bruno Petkovic (Croatia) wins a free kick in the defensive half.
Substitution, Belgium. Youri Tielemans replaces Leander Dendoncker.
Get the latest results and goal notifications for any team at the Fifa World Cup by downloading the BBC Sport app: Appleexternal-link - Androidexternal-link - Amazonexternal-link
Get your daily dose of Fifa World Cup reaction, debate & analysis with World Cup Daily on BBC Sounds