In brief
Mikel Oyarzabal converted a 20th-minute penalty after Lucas Digne's foul on Lamine Yamal, giving Spain an early lead they never relinquished.
Right-back Pedro Porro finished a one-two with Dani Olmo just after the hour to make it 2-0 and effectively end the contest.
Kylian Mbappé and Ousmane Dembélé were stifled as France registered no shots on goal after the break, leaving Les Bleus without a path back into the game.
Spain's victory in Arlington extended its undefeated streak to 37 games, matching the longest run in men's international football history.
Spain will face either England or Argentina in Sunday's final at MetLife Stadium in New Jersey, while France head to Miami for the third-place match on Saturday.
- 20'Mikel Oyarzabal scores from the penalty spot after Lucas Digne fouls Lamine Yamal.
- 22'William Saliba forced off with an injury and replaced by Maxence Lacroix.
- 60'Pedro Porro finishes a one-two with Dani Olmo to double Spain's lead.
Spanish control from the outset
Spain never looked threatened in the semi-final at AT&T Stadium, taking the lead in the 20th minute after Lucas Digne felled Lamine Yamal inside the box. The Real Sociedad striker Mikel Oyarzabal converted the penalty with ease, sending Mike Maignan the wrong way. France offered little in response before the break, with Kylian Mbappé isolated and the midfield pairing of Rodri and Fabián Ruiz snuffing out any French rhythm. Only a rare Mbappé burst forced Unai Simon into action late in the half.
France's attacking stars go missing
Les Bleus, who were aiming for a third consecutive World Cup final, saw their celebrated forwards rendered impotent. Mbappé was a peripheral figure throughout, failing to influence the game beyond a late incident in which Yamal lunged at him and avoided a booking. Ousmane Dembélé found no space against a compact Spanish back line, while Michael Olise was unable to replicate the creative displays of earlier rounds. De Volkskrant described the French captain as a marionette in Spain's circus, and the statistics bore that out: France managed no shots on target in the second half.
Key moments shape the contest
The penalty stemmed from a clumsy challenge by full-back Lucas Digne, who appeared unaware of Yamal's run before catching the teenager. Yamal did touch the ball with his arm in the build-up, but referee Ivan Barton from El Salvador saw no infringement. Shortly after the goal, France's problems deepened when centre-back William Saliba sat down with an injury and was replaced by Maxence Lacroix. Spain nearly doubled the lead before half-time when Fabián Ruiz forced a save from Maignan after a flowing move involving Oyarzabal, Dani Olmo and Yamal.
Porro puts the result beyond doubt
Spain's second goal arrived shortly after the hour mark. Right-back Pedro Porro exchanged a quick one-two with Dani Olmo on the edge of the area and finished low past Maignan. From that point, France's play grew increasingly desperate, with misplaced passes and hurried long balls that were easily dealt with by the Spanish centre-backs Aymeric Laporte and Pau Cubarsí. The 2-0 scoreline flattered a French side that failed to produce a shot on target in the second period, and Spain saw out the closing stages with the composure of a team unbeaten in 37 matches.
What lies ahead
Spain will meet the winner of Wednesday's semi-final between England and Argentina at MetLife Stadium in East Rutherford, New Jersey, on Sunday evening. The result extends Spain's unbeaten streak to 37 games, equalling the all-time international record. France must regroup for the third-place play-off in Miami on Saturday against the loser of that tie. For Luis de la Fuente's side, it represents only a second World Cup final appearance, the first since the 1-0 victory over the Netherlands in 2010 that brought the nation its maiden world title.