France booked their spot in the 2026 World Cup semi-finals with a commanding 2-0 win over a resilient Morocco side in Boston on Thursday. As expected, Kylian Mbappe was at the centre of the action, making up for a disastrous first-half penalty miss by scoring a superb goal and later setting up Ousmane Dembele to seal the result.
Didier Deschamps’ men controlled much of the opening half, though they were left frustrated after Mbappe squandered a golden opportunity from the spot. Morocco, on the other hand, struggled to create any meaningful threat going forward. In the opening minutes, Mbappe’s deflected low shot went narrowly wide, while Dayot Upamecano’s close-range header from the subsequent corner was well stopped by Bono.
The first half’s key incident arrived when Mbappe dazzled Noussair Mazraoui with a stepover inside the box before being brought down by the Manchester United defender. Following a lengthy three-minute VAR check, the French forward’s weak penalty was comfortably gathered by goalkeeper Bono.
France came close twice more before the break. Ayyoub Bouaddi’s error allowed Desire Doue to drive forward and test Bono, before Lucas Digne’s dipping strike rattled the crossbar during stoppage time.
The second period followed a similar pattern, but France finally broke the deadlock around the hour mark. Mbappe made amends for his earlier miss, finding space inside the area to curl an unstoppable effort beyond Bono. Just minutes later, he turned provider, releasing Dembele, who surged forward and slotted home with a low finish that slipped under Bono’s weak effort to save.
Morocco’s only real threat came in the final ten minutes when Azzedine Ounahi forced Mike Maignan into a smart save from distance, but the AC Milan goalkeeper was equal to the challenge.
Here are the player ratings from France’s victory in Boston as they progress to face either Belgium or Spain in the World Cup semi-finals.
Goalkeeper & Defence
Mike Maignan (6/10): Virtually a spectator for most of the match as Morocco rarely troubled him, but stayed sharp to make a late save.
Jules Kounde (7/10): Involved frequently down the flank and kept the opposition quiet throughout.
Dayot Upamecano (6/10): Should have done better with his early header and nearly put through his own net with a sliced clearance. Otherwise untroubled defensively.
William Saliba (6/10): Exuded composure and completed plenty of passes. It was one of his more comfortable outings.
Lucas Digne (7/10): Constantly pushed forward and struck the crossbar with a long-range attempt. Had to stay alert against Brahim Diaz.
Midfield
Manu Kone (7/10): Produced several well-timed defensive contributions early on. A steady and reliable performance.
Adrien Rabiot (6/10): Passed efficiently and maintained his defensive duties, though he struggled to influence attacking play.
Michael Olise (7/10): Often injected pace and creativity into France’s attacks, showcasing quick feet and flair.
Attack
Ousmane Dembele (7/10): Quiet for much of the game but came alive when it mattered, driving centrally to score France’s second goal.
Kylian Mbappe (8/10): Almost scored early on, then missed a dreadful penalty. However, he redeemed himself with a brilliant strike and a composed assist for Dembele.
Desire Doue (7/10): Made a powerful run that nearly resulted in a goal and later assisted Mbappe’s opener through perseverance.
Substitutes & Manager
Warren Zaire-Emery (6/10): Added energy and intensity to France’s pressing late on.
Jean-Philippe Mateta (6/10): Found it difficult to make an impact, missing one header and seeing another effort saved.
Bradley Barcola (6/10): Looked lively against tired defenders and forced Bono into a late save.
Malo Gusto (N/A): Came on late to give Kounde a rest.
Didier Deschamps (7/10): It wasn’t the most beautiful performance, but his team executed the plan effectively — and at this stage, results are all that count.