A fourth-minute goal from Thomas Meunier and an 82nd minute Eden Hazard strike earned Belgium the victory and the third-place, which improves on their previous best performance of a fourth-place finish in 1986.
England were on top for most of the second half but with captain Harry Kane looking tired, Belgium's greater sharpness in the final third proved decisive.
Meunier's goal came after Romelu Lukaku swung the ball out left to Nacer Chadli who burst down the wing and slipped the ball across the face of the goal and the midfielder confidently slotted past Jordan Pickford.
The goal means Belgium have had 10 different goalscorers at this World Cup - equalling the record set by France in 1982 and Italy in 2006.
While England manager Gareth Southgate made five changes to the side which lost to Croatia, Belgium boss Roberto Martinez made just two switches.
Meunier returned from suspension and Youri Tielemans given a start ahead of Maroune Fellaini in midfield with the Belgians fielding their strong front three of Lukaku, Kevin De Bruyne and Eden Hazard.
De Bruyne should have made it 2-0 in the 12th minute when the ball found him at the back post after a slip-up from John Stones, but his poorly struck shot was easily dealt with by Pickford.
Kane, the tournament's top scorer with six goals, had an opportunity when set up by Raheem Sterling in the 24th minute but was off-balance as he screwed his shot wide.
Southgate brought on Marcus Rashford for Sterling and Jesse Lingard for Danny Rose at the break and the change worked well, with England well on top in the second half.
Toby Alderweireld was forced to clear an Eric Dier effort off his line at full stretch after a neat exchange between the Tottenham midfielder and Rashford ended with a chip over Belgian keeper Thibaut Courtois.
Dier and then Harry Maguire both headed wide from promising positions, while at thee other end Meunier went close to a second with a powerful volley that Pickford did well to save.
But the game was wrapped up when De Bruyne burst from midfield and slipped the ball through to Hazard, who glided past Phil Jones and fired into the bottom corner.