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.