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 – equal to 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 was given the start ahead of Marouane 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 handled by Pickford.
Kane, the tournament’s top scorer with six goals, had an opportunity set up by Raheem Sterling in the 24th minute, but was off-balance as he screwed his shot wide.
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.
France will face Croatia in Sunday’s final at the Luzhniki Stadium in Moscow.
England lost to Belgium twice and to Croatia. They beat Panama, Tunisia, Colombia and Sweden. Yet people are acting like this was some massive achievement. They beat teams they should beat and got spanked by good teams. How is that amazing? #Eng #Bel #BELENG
— fox ☺ (@Fox34345) July 14, 2018