In a World Cup full of upsets, this was the one that got away.
France survived an almighty scare to set up the glamour final which the organisers would have wanted as it puts the world champions against Argentina and Lionel Messi against Kylian Mbappe. The scoreline makes it look straightforward when the opposite was true and sometimes the story is much better when it does not follow the script.
Morocco have been the surprise package of this tournament as they scrapped, battled and fought for their lives in front of a deafening partisan 68,294 crowd in the Al Bayt Stadium with thousands locked outside.
It was brutal and France were pushed all of the way as the brilliance of their captain Hugo Lloris and Liverpool defender Ibrahima Konate stopped Morocco from equalising.
Eventually, Les Bleus reigned supreme as once again Antoine Griezmann put in another sensational performance and surely only Messi winning the final can stop the France playmaker being crowned player of the tournament. And this time Griezmann was not just everywhere in attack but tracking back to defend as he made vital clearances as France were hanging on for dear life amid Morocco pressure.
Morocco were the first Arab and African country to reach a World Cup semi final and they more than held their own as there were tears on the faces of their fans at the final whistle. This has been one hell of a ride for Morocco as they have fed off the incredible energy of their supporters who should welcome the players home as national heroes.
They knocked out Belgium in the Group stages, beat Spain and Portugal on the way to the last four and at the final whistle the Morocco players sank to their knees in despair while France celebrated with a mixture of joy and relief.
There was a lovely moment as Olivier Giroud consoled Morocco coach Walid Regraghui who has coached and drilled his players to near perfection.
France’s dream of retaining the trophy they won in Russia four years ago is very much alive but you can be sure their confidence will have been checked while a day less to prepare having been pushed all of the way might just prove crucial on Sunday.
You thought this might be a game too far for Morocco and that definitely looked to be the case when their game plan was ruined inside five minutes.
Raphael Varane played the ball out of defence, Morocco defender Jawad El Yamiq tried to step up and intercept the ball, he mistimed his move and let in Griezmann. Mbappe saw his shot blocked but the ball fell to Theo Hernandez at the back post and he hooked home from close range.
France celebrated wildly as if they knew that would make Morocco have to come out to play rather than sit deep and defend as they had done so brilliantly previously. Olivier Giroud smashed a shot against the post before it got even worse for Morocco when their captain Romain Saiss, nursing a hamstring injury, hobbled off and was replaced but Seliun Amallah.
It took a while but Morocco could sense another scalp as El Yamiq’s overhead kick nearly crept in but for a post and keeper Hugo Lloris making a one-handed save.
Morocco laid siege to the France box for so much of the second half. Konate made a sensational clearance, Lloris steadied the ship but Morocco just could not force the ball home while Mbappe continued to threaten on the break even if he was kicked from pillar to post.
France eventually made changes as first Marcus Thuram replaced Giroud and then Randal Kolo Muani came on for Ousmane Dembele.
Incredibly, Kolo Muani scored just 44 seconds after coming on - the third quickest by a substitute in World Cup history - with the easiest of tap-ins after Mbappe’s attempted shot was deflected. It was a gift for France and so cruel for Morocco.