A clinical Spanish side left Les Bleus empty-handed, agonisingly just one step away from the showcase in New York.
The match swung against coach Didier Deschamps' men in the 22nd minute. Lucas Digne's mistimed challenge on Lamine Yamal gifted Spain a penalty, which Mikel Oyarzabal confidently converted.
Forced to chase the game, France struggled to find a creative rhythm. Mbappe was suffocated by Spain's disciplined low block.
Any hopes of a second-half French resurgence were dashed in the 58th minute. Pedro Porro exploited space on the right flank, exchanging a quick one-two before firing a devastating second goal past Mike Maignan.
"I don't think we played the match we wanted to play, whether tactically, technically, or in terms of our overall performance level," Mbappe told the French broadcaster M6.
"When you don't do what you're supposed to do in a World Cup semi-final, you don't win. Our goal was to press them high up the pitch to prevent them from settling into that slow, controlled rhythm, because when it comes to controlling the game they are better than us. We failed to do that.
“Against Spain that's a real problem. When you put it all together, the result is a defeat. It's a huge disappointment.”