France end Morocco’s World Cup dream with a 2-0 victory in the semi-finals so the holders will battle it out with Argentina for the trophy on Sunday.
Lionel Messi and company await France at the Lusail Stadium on Sunday night but the European side were pushed all the way by Morocco.
Morocco more than matched France after Theo Hernandez fired the latter in front early on. Randal Kolo Muani netted late on to settle the game, though.
There will be subplots aplenty on Sunday, Messi up against club-mate Kylian Mbappe at the forefront, but this was a night where Morocco proved their shock progression into the last four was no fluke, going toe-to-toe with the reigning champions as well as having a strong penalty claimed turned down.
For the Morocco players and their energetic coach Walid Regragui, this turned out to be one dream too far having already beaten Belgium, Spain and Portugal – ending the hopes of Eden Hazard, Sergio Busquets and Cristiano Ronaldo en route to an historic semi-final.
Regragui was keen to reward the players who had claimed those scalps as Nayef Aguerd and captain Romain Saiss were included in the starting line-up despite being major fitness doubts.
But that plan backfired even before kick-off – West Ham defender Aguerd, who had been struggling with a thigh injury, replaced by Achraf Dari after the warm-up.
Morocco’s fans filled the Al Khor night with noise and they were still at fever pitch when, with less than five minutes played, Hernandez benefitted as a lucky rebound off Dari from an Mbappe shot fell into his path and he steered past Yassine Bounou.
If there was a roof at Al Bayt Stadium, it would have come off had Hugo Lloris not been equal to an arrowed Azzedine Ounahi effort as Morocco looked to hit back, a sign of things to come from just the third nation outside of Europe and South America to have ever gone this far at a World Cup.
Olivier Giroud’s fierce strike hit the post with Bounou beaten and – having chased him back – Saiss’ evening ended there, the Morocco captain forced off with just 21 minutes on the clock as he was replaced by midfielder Selim Amallah.
The African side were not to be put off and could have been awarded a penalty as Sofiane Boufal tangled with Hernandez – but instead the former Southampton winger was booked for his part in the challenge.
Mbappe darted past Achraf Hakimi but could not hit the target with his resulting shot as Giroud passed up a great chance to double the lead, curling the rebound wide.
A mixture of post and Lloris’ outstretched glove prevented Jawad El Yamiq from levelling with a glorious overhead kick as the tie remained in the balance heading to half-time.
Both Raphael Varane and Ibrahima Konate were on hand to clear crosses away as Youseef En-Nesyri looked to pounce with France starting to show signs of frustration.
Substitute Abderrazak Hamdallah should have got a shot off sooner after breaking into the France box but was crowded out as time began to run out.
Their hopes would soon be extinguished, however, as another deflection from an Mbappe shot fell at the feet of Kolo Muani, who tucked the ball home having replaced Ousmane Dembele just 44 seconds earlier.
Even then, Morocco refused to concede defeat – Jules Kounde’s clearance off the line from a deflected Ounahi shot, maintaining France’s clean sheet and sending Didier Deschamps’ side through to consecutive finals.