Samuel Umtiti was the unlikely hero for Les Bleus with a header early in the second half which proved to be the decisive moment in a match high on quality, albeit low on goals.
A pulsating first half saw both sides miss chances and both goalkeepers pull off memorable saves, but it was France who ultimately came out on top in the star-studded contest to set up a World Cup final showdown against either Croatia or England.
The match quickly showed signs of living up to expectations with both sides looking to get forward early on, although it took 16 minutes for the first shot to arrive when Eden Hazard drilled a low strike wide of the far post after France had given the ball away in a dangerous position.
It was almost end-to-end football until the end of the half from that point on as the quality of both teams began to shine through, and France had the first shot on target of the match moments later when Blaise Matuidi - back from suspension for this match - stung the palms of Thibaut Courtois with a powerful strike from range.
Hazard was Belgium's main dangerman throughout and gave an isolated Benjamin Pavard a torrid time for much of the first half, with one such occasion coming in the 19th minute when he darted past the full-back before curling an effort towards goal which needed a crucial glancing header from Raphael Varane to flick it narrowly over the crossbar.
Belgium were enjoying a spell of dominance around the midway point in the half and must have thought that they had taken the lead when the ball dropped to Toby Alderweireld from a corner and he managed to dig out a goalbound effort, only for Hugo Lloris to produce a stunning save at full stretch.
France soon had their own spell on top as the match continued to ebb and flow, and Olivier Giroud had a couple of half-chances when first he poked the ball wide from Umtiti's long ball forward and then produced an inventive header which dropped narrowly past the post.
The Chelsea striker's best chance arrived shortly after the half-hour mark when Antoine Griezmann and Kylian Mbappe linked up stylishly to lay the ball into his path, but Giroud was slow to react and fluffed his lines with his finish.
Les Bleus continued to look the most likely as the first half wore on, and they almost hurt Belgium with another counter-attack in the 37th minute when Griezmann led the charge before dragging his finish wide of the target with Mbappe waiting for the pass.
The best chance of the half arrived with just six minutes remaining, though, as Mbappe poked the ball into the path of Pavard, who only had Courtois to beat but was denied by a big save from the spreadeagled Belgian keeper.
While many of the star performers were able to showcase themselves in the opening 45 minutes, Romelu Lukaku endured a very quiet half and had to wait until the last action for his first sniff of a chance, when he could not react in time after Umtiti had failed to cut out another wicked Kevin De Bruyne delivery.
Lukaku was immediately more involved at the start of the second half, though, climbing above Varane to get his head to Axel Witsel's cross only to put his effort comfortably over the crossbar.
It was a promising start to the second half for Belgium, but that soon came to a shuddering halt when France broke the deadlock six minutes after the restart, with Umtiti rising above Marouane Fellaini at the near post and flicking his header past Courtois.
The opener seemed to take some of the wind out of Belgium's sails, and France - inspired by the growing influence of Mbappe - almost doubled their advantage five minutes later when the Paris Saint-Germain youngster impudently flicked the ball into the path of Giroud, who was unable to finish from inside the area.
Roberto Martinez turned to Dries Mertens off the bench in an attempt to change things, and the Napoli attacker had an immediate impact when he reached the byline before standing a cross into the middle which was only cleared as far as De Bruyne, who scuffed his volley into the arms of Lloris.
A second wild effort from De Bruyne saw another chance go begging for Belgium before Witsel forced a good save from Lloris with a powerful drive from 25 yards out.
That proved to be the last clear sight of goal Belgium had as France saw the game out in a professional manner, and Les Bleus came closest to adding to the scores further when both Griezmann and Corentin Tolisso were denied by Courtois in stoppage time.
Scenes of jubilation and despair in equal measure greeted the final whistle when it came, with France booking their place in the final for the first time since 2006 whereas Belgium's attempts to make it to the biggest game in football for the first time ever fell just short.
France manager Didier Deschamps is now just 90 minutes away from becoming only the third man to win the World Cup as both a player and a coach, with his French side facing either Croatia or England in Sunday's final.
Belgium, meanwhile, will take on the loser of that second semi-final in the third-placed playoff on Saturday knowing that victory would still give them the consolation of their best-ever World Cup showing.
FRANCE (4-2-3-1): Lloris; Pavard, Varane, Umtiti, Hernandez; Kante, Pogba; Mbappe, Griezmann, Matuidi (Tolisso 86'); Giroud (N'Zonzi 85')
BELGIUM (4-2-3-1): Courtois; Chadli (Batshuayi 91'), Alderweireld, Kompany, Vertonghen; Witsel, Dembele (Mertens 60'); De Bruyne, Fellaini (Carrasco 80'), Hazard; Lukaku