Yamal â- at the tender age of 16 years and 362 days â- struck a stunning equaliser and Dani Olmo quickly added what turned out to be the winner as Spain recovered from Randal Kolo Muani's header to win 2-1 and book a date with England or the Netherlands in Sunday's final.
Kolo Muani had headed France in front from close range but Les Bleus were upstaged by the Barcelona teenager, who turns 17 on Saturday.
It was a moment to cherish as Yamal jinked to his left then moved to his right, allowing space back on his left foot to beat Mike Maignan from 25 yards with a precise curling shot that went in off a post.
Spain's victory saw them become the first side to win six consecutive games at the Euros without the need for penalties.
Yamal â- beating Pele's record as the youngest player to feature in a major tournament semi-final â- posted early notice of his threat with a pinpoint fifth-minute cross that Fabian Ruiz headed over from inside the six-yard box.
On the same flank, France's captain and talisman Kylian Mbappe was more recognisable both with and without the ball at his feet.
Mbappe had dispensed with the mask he had worn since breaking his nose during Franceâs opening win over Austria.
France had struggled for fluency during the tournament with Mbappe seemingly hampered by the mask but this was a different story as stand-in 38-year-old full-back Jesus Navas had a difficult time early on.
Nine minutes had elapsed when Mbappe clipped in a cross that Kolo Muani met to become the first France player to score in open play at Euro 2024.
Mbappe went close again with a blocked effort, but Yamal's brilliance levelled the score after 21 minutes and Spain were soon ahead.
Olmo's delicious touch took him past Aurelien Tchouameni and Jules Kounde could not keep out the Spaniard's powerful shot as the defender backtracked towards his own goal.
It was originally given as a Kounde own goal, but that was correctly changed as Olmo was rewarded for his superb piece of skill.
A high-quality contest was extremely easy on the eye, and France fashioned chances at the start of the second half.
Unai Simon held Mbappe's tame effort before getting a hand to Ousmane Dembele's drilled cross, and Dayot Upamecano mistimed his header when unmarked at a corner.
France boss Didier Deschamps made a triple substitution by sending on Antoine Griezmann, Bradley Barcola and Eduardo Camavinga, with Spain seemingly content to protect their advantage and little more.
It was a policy that paid off with Mbappe's wayward attempt in the closing moments summing up his disappointing tournament and stamping Spain's ticket to the Berlin final.
There was a worrying incident after the match as Spain captain Alvaro Morata was left limping after a collision involving a member of personnel at the stadium.