France didn't exactly sparkle but they got the job done as a set piece settled another game at this World Cup, splitting the two sides in a close encounter in Saint Petersburg. Samuel Umtiti's header proved the difference in a game of few chances as Belgium struggled to produce their best against Didier Deschamps' disciplined side.
Given the balance of this World Cup, whoever won this fixture would almost certainly be hot favourites to lift the famous trophy. Obviously, there are no easy finals but these two would likely pose a greater threat to each other than they'd fear from either England or Croatia.
France were one of the favourites coming into the tournament, they haven't looked amazing yet but they have consistently got the job done and found a way to win which is the sign of a great team.
This was a peak tournament for Belgium's golden generation, meanwhile, who may never have a better chance to win the World Cup. They have looked impressive in their victories but there was an air of naivety around the side and a danger that Roberto Martinez had maybe already shown too much of his hand with the toughest games still to come.
It was Belgium who started the brighter but it did little to panic France who have already endured slow starts at this tournament and it was the French who carved out the first clear chance with Paul Pogba setting Kylian Mbappe on his way around the 12th minute.
The France forward met the onrushing Thibaud Courtois who nullified the danger but it was the first warning shot fired from Deschamps team. Kevin De Bruyne shortly returned the favour, setting Eden Hazard free in the box but the Belgian pulled his shot wide as both sides began to flex their attacking muscles.
Belgium looked the most likely to break the deadlock as they began to ask some real questions of France, Raphael Varane made a crucial clearance from Hazard before Hugo Lloris tried his hand at heroics denying Marouane Fellaini and Toby Alderweireld.
France began to grow into the game around the half-hour mark with a good spell of possession and looked certain to take the lead as Mbappe picked out the run of Olivier Giroud in the box. Giroud, who has not had a good World Cup, once against fluffed his lines, sending a tame effort comfortably wide but it was the best chance of the game so far.
Minutes later France were at it again with Mbappe the creator once more setting Benjamin Pavard free around the six-yard box. The full-back scored an excellent goal against Argentina but could only blast his shot into the reach of Courtois as Belgium survived another big scare.
As half-time approached Romelu Lukaku nearly got very fortunate as the ball cannoned against him but he was unable to divert it anywhere near the goal. It was his only real involvement of the half as it finished 0-0 with little to choose between the two sides.
It was Lukaku who had the first say in the second half too and probably should have done more to test Lloris with an early header as the game quickly picked up the tempo from before the break.
But it was France who took the lead in the 50th minute after a well-worked move which led to a crucial corner for Les Bleus. Umtiti rose high for his nation, powering his effort into the back of the Belgium net to hand his side the ascendency.
France looked certain to add a second in the frantic minutes that followed, Giroud came closest to delivering for his side but Belgium just about managed to hang on.
Dries Mertens was introduced as Martinez looked to bolster his attack with Belgium beginning to get back into the game. Fellaini had another big chance for the Red Devils but was once again unable to trouble Lloris as time ticked on.
The French began to drop deep as they looked content to hold on to their lead, with all the emphasis on Belgium to break them down. As the game ran into the final ten minutes it was beginning to look like a task that was beyond the Belgian side.
Axel Witsel's speculative effort was enough to fire up the fans but it was straight at Lloris. Yannick Carrasco also took the field in a last ditch bid to save this game for his side.
The French were unwavered with the oppositions new approach and Deschamps took steps to strengthen further removing Giroud for Steven N'Zonzi with just five minutes left of normal play. Corentin Tolisso was also introduced for Blaise Matuidi who looked to be carrying a knock as the French continued to run the clock down.
Belgium enjoyed plenty of possession and flair but they never really carved out a clear-cut chance for themselves in the second half. They really missed Lukaku's presence in the area that had been so fruitful for them in the earlier games.
He's come under some criticism for not producing in big games throughout his career and unfortunately for Belgium, this was another performance typical of that.
It was also a typical performance for this French side as they once again didn't look spectacular but relatively comfortably navigated a tough game. That efficient, productive approach has been the key to their success at the tournament and will be something the opposition will have to stretch in the final if anyone is to stop France.
It was beyond this talented Belgian side and they will now have to settle for a third-place playoff on Saturday whilst France march on to the Luzhniki Stadium for their fourth major final in the last 20 years.