Danny Lewis
Jul 14, 2026, 06:15 PM ET
Spain completely outclassed an underwhelming France side Tuesday to earn a 2-0 victory and reach the 2026 World Cup final.
La Roja capitalized on Les Bleus' torrid first half and went ahead in the 22nd minute, when Lamine Yamal nipped in to steal the ball from Lucas Digne and win a penalty that Mikel Oyarzabal clinically converted.
They continued to control the game going into the second half and doubled their lead in the 58th minute, as Pedro Porro played a one-two with Dani Olmo and coolly finished.
While Spain will now deservedly compete against England or Argentina for their second World Cup title, France fail to reach the final for the first time in the last three editions.
Spain
Manager rating (out of 10)
Luis de la Fuente, 9 -- He didn't have to do too much in terms of substitutions or tweaks during the match because all of his work had been done before the games started.
Player ratings (1-10; 10 = best, 5 = average)
GK Unai Simón, 7 -- Had a couple of uncomfortable moments after rushing out, but that same approach ensured he met Adrien Rabiot's through ball ahead of Kylian Mbappé.
DF Pedro Porro, 9 -- Was largely strong defensively and took his goal brilliantly, playing a lovely one-two with Olmo and finishing well.
DF Pau Cubarsí, 9 -- Set the tone for his performance by blocking Bradley Barcola's cross and did well to recover and halt Mbappé when it looked like he might get behind him. Read the game brilliantly.
DF Aymeric Laporte, 9 -- Was superb at the heart of Spain's defense, notably cutting out an Michael Olise through ball for Mbappé and putting his head in to ensure Rabiot couldn't run through.
DF Marc Cucurella, 9 -- Delivered the cross that resulted in the penalty incident and defended well despite being booked in the 31st minute. Notably deflected Mbappé's shot wide.
MF Rodri, 9 -- Was superb throughout and played a key role in Spain completely controlling the midfield.
MF Fabián Ruiz, 8 -- Delivered another brilliant performance in Spain's midfield but couldn't cap it off with a goal as his shot was cut out by Dayot Upamecano.
MF Lamine Yamal, 8 -- Nipped in to steal the ball and win a penalty from Digne and continued to provide a threat throughout, although he disappointingly cut the ball back when there was chance to shoot and saw a goal ruled out for offside.
MF Dani Olmo, 8 -- Often made sure his mark was felt in the game, most notably providing lovely first-time passes that resulted in a Yamal chance and Porro's goal.
MF Álex Baena, 7 -- Won his battle with Jules Koundé and helped Cucurella defensively at times. He did send a disappointing free kick into the wall.
FW Mikel Oyarzabal, 8 -- Wasn't always involved but held the ball up well at times. Most importantly, he was clinical from the penalty spot when called upon.
Why Spain will be 'huge favourites' no matter their final opponents
Substitutes
Ferran Torres, N/R -- Replaced Oyarzabal in the 74th minute and guided a header wide from a promising opportunity.
Mikel Merino, N/R -- Replaced Olmo in the 78th minute with his late heroics not being required today.
Pedri, N/R -- Replaced Ruiz in the 78th minute and immediately got on the ball to ensure Spain retained control of the midfield.
Marcos Llorente, N/R -- Replaced Porro in the 84th minute and looked steady.
Nico Williams, N/R -- Replaced Baena in the 84th minute and drove into the box but hit the side netting from a tight angle.
France
Manager rating (out of 10)
Didier Deschamps, 4 -- This is more on the players than Deschamps on the day he managed a record 26th World Cup match, but he couldn't find a way to change the game. Introducing Manu Koné at halftime did very little but at least ensured Adrien Rabiot couldn't get himself a second yellow. It felt a little harsh on Bradley Barcola that he was the first of France's attackers to be brought off, and it's surprising that Digne wasn't substituted earlier.
Player ratings (1-10; 10 = best, players introduced after 70 minutes get no rating)
GK Mike Maignan, 5 -- Played a poor pass in the build-up to a Spain chance but there was little he could do about either goal.
DF Jules Koundé, 5 -- Delivered a dangerous cross that was agonizingly close to finding Mbappé, but he did little else going forward and Alex Baena seemed to get in his head.
DF Dayot Upamecano, 6 -- Had some impressive moments with strong and decisive defending, including getting across to deny Fabian Ruiz, but he failed to stop Olmo from getting the ball to Porro for Spain's second.
DF William Saliba, 5 -- His departure came just after the hydration break and was a real blow for France, who had conceded just before it.
DF Lucas Digne, 2 -- Showed a complete lack of awareness when conceding the penalty and continued to struggle throughout, being caught out of position for Spain's second.
MF Aurélien Tchouaméni, 5 -- Was invisible at times and guided a flick over the crossbar when his chance came, but he at least fought for the ball.
MF Adrien Rabiot, 4 -- The yellow card Rabiot earned for fouling Dani Olmo was likely the main reason he was taken off at halftime, but he also struggled in possession at times and hit a shot harmlessly off-target.
MF Ousmane Dembélé, 3 -- Delivered a dangerous ball behind for Mbappé but was incredibly sloppy far too often outside of that. Cut inside but his shot was denied.
MF Michael Olise, 3 -- He was a shadow of the player we have seen this World Cup. His flicks didn't come off, and he offered very little in terms of a threat.
MF Bradley Barcola, 6 -- Was France's brightest attacker while he was on the pitch. He skipped past Porro but saw his cross stopped and fired off-target after showing nice feet.
FW Kylian Mbappé, 4 -- Tried to ignite France after Yamal's goal was ruled out but was instead booked for a challenge on Simon that encapsulated France's frustration late on, then sent a free kick harmlessly over the crossbar.
Substitutes
Maxence Lacroix, 4 -- Replaced the injured Saliba on the half-hour mark and won't have been pleased with the part he played in Spain's second goal.
Manu Koné, 4 -- Replaced Rabiot at halftime and offered very little as Spain retained their control.
Désiré Doué, 4 -- Replaced Barcola in the 57th minute and cut inside to let off a shot that was blocked. He then showed a complete lack of conviction when trying to punish Simon's unconvincing header.
Theo Hernández, N/R -- Replaced Digne in the 72nd minute and at least gave Yamal a bit of a battle.
Rayan Cherki, N/R -- Replaced Olise in the 72nd minute and slid a nice pass through to Mbappé, although it came to nothing.