France beat Morocco at their own game to reach a second successive World Cup final.

An early goal from Theo Hernandez and a tap-in from Randal Kolo Muani was enough for the 2018 winners, who defended resolutely against their spirited, determined opponents.

In the end, it proved a step too far for Morocco, making history as the first African country to reach a semi-final.

It took only five minutes for the world champions to take the lead against a Morocco side without defender Nayef Aguerd, who had pulled out of the starting XI at the last minute. Antoine Griezmann broke into the box and fed Kylian Mbappe, whose shot was deflected into the path of Hernandez. The left-back hit an acrobatic half-volley to convert from close range and give France the perfect start.

In response, Azzedine Ounahi hit a curling shot which required a save from Hugo Lloris in what was a more open contest than might have been expected.

Morocco’s seemingly impervious defence was being breached far more often than in previous games, though, and Roman Saiss, playing through injury, very nearly made a costly mistake, allowing Olivier Giroud to race in behind and drill a shot against the post.

Saiss was forced to withdraw after 20 minutes, a significant blow to the underdogs’ chances. Still, Walid Regragui’s side were able to take the game to France, who were content to sit off and look for moments on the counter-attack. 

They nearly doubled their lead just after the half-hour mark when Aurelien Tchouameni surged through midfield and threaded a pass through to Mbappe, who was slightly off balance as he shot. The ball was played back into the box for an unmarked Giroud, but the former Arsenal and Chelsea striker guided his effort just wide.

France looked increasingly comfortable but they were almost stunned by a wonder goal minutes before half-time when defender Jawad El Yamiq produced a remarkable overhead kick from a corner which struck the post.

Morocco, and their vocal fans, were visibly buoyed by that moment and the start of the second half was an assault on France’s box. Several times they breached the backline and looked set to create a good chance, but the final ball proved elusive and some last-ditch defending denied the North Africans.

Didier Deschamps had clearly told his players to cede possession and invite Morocco to find a way through, something they hadn’t had to do until this stage of the tournament having not gone behind in any game.

At the other end, as the game entered its final 20 minutes, substitute Marcus Thuram could only glance a header wide after meeting a free-kick whipped into the box by Griezmann.

A slip from Tchouameni soon after almost allowed Abderrazak Hamdallah a clear sight of goal but he inexplicably delayed his shot and lost the ball to the relief of everyone in blue.

But the match was won with nearly 80 minutes played when a weaving run from Mbappe and a low, deflected shot allowed substitute Kolo Muani to tap in at the back post with his first touch after coming on from the bench.