Both side brought experience and tactics to play, but France clinical approach to the game gave the the lead after Samuel Umtiti outjumped Marouane Fellaini in the 51st minute to score.
With their performance so far since the beginning of the competition, the clash of both team commanded high expectations, as both teams have not lost a match since the opening of their campaign in the competition.
The game’s opening moments were unexpectedly dull, with both sides showing some cautiousness, limiting the goalkeepers to just a few loose balls to pick up.
Belgium came in strong in the attack after they had settled into the match, with Eden Hazard dangerously poking and terrorizing the French attack.
However, the French’s adventurous efforts upfront yielded some results when Olivier Giroud’s shot on the turn was blocked for a corner kick by Kompany, and Umtiti scored from Antoine Griezmann’s effort.
But then, solid defending by Vincent Kompany, Toby Alderweireld and Jan Vertonghen for Belgium, and France’s Benjamin Pavard, Raphael Varane, Umtiti and Lucas Hernandez also helped to keep the game goalless.
With Ngolo Kante, Paul Pogba, Blaise Matuidi and Kylian Mbappe holding the midfield and depriving the Belguim forwards the space to carry out their it intend, Romelu Lukaku was left isolated in spite of good efforts by Eden Hazard, Kevin de Bruyne and Fellaini, while Moussa Dembele, Nacer Chadli and Axel Witsel just ran around.
Dries Mertens’ entry in the 60th minute did bolstered the Belgian attack, with Fellaini’s header missing target by inches in the 65th minute, but by then the game was already won.
France will now head to Moscow to meet on Sunday the winners of Wednesday’s other semi-final pairing, between England and Croatia.
Meanwhile, Belgium will be back in St Petersburg to face Wednesday’s match losers in the third-place match on Saturday.