Romelu Lukaku reacts
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.
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.
-- Courtesy of BBC Sport