Xabi Alonso celebrated his 100th international cap with both goals as Spain saw off France 2-0 to set up an Iberian derby against Portugal in the semi-finals of Euro 2012.
Alonso's rare headed goal put Spain in control after 19 minutes and the former Liverpool midfielder wrapped up the victory with a last-minute penalty.
France were distinctly off colour all night and barely tested Spain, who will put their European crown on the line against Cristiano Ronaldo's Portugal in Donetsk on Wednesday night.
Spain coach Vicente del Bosque reverted to his strikerless starting formation, replacing Fernando Torres with Cesc Fabregas in his only change from the win against Croatia.
France made four changes and started with two right-backs in Anthony Reveillere and Mathieu Debuchy, although neither could prevent Jordi Alba supplying Alonso with a telling cross.
Spain set out their stall early, with Xavi and Andres Iniesta combining magnificently in midfield and they almost succeeded in picking out Fabregas.
France were struggling to keep possession, which is not a problem Spain's midfield artists suffer from too often and certainly not on Saturday night.
The French formation was affording Alvaro Arbeloa and David Silva plenty of space in which to attack down the Spanish right - but the opening after 19 minutes came down their left flank.
Iniesta burst forward and while left-back Alba got the better of Debuchy, Alonso had escaped the attentions of Florent Malouda wide on the right.
When Debuchy stood up his cross at the far post, Alonso came racing in unmarked to beat Hugo Lloris with a downward header directed back across goal.
Silva twisted his way into the box, ran at Manchester City team-mate Gael Clichy and almost picked out Fabregas when he cut the ball back.
France had barely tested the Spanish defence and Karim Benzema wasted a 25-yard free-kick by lofting it so high over the bar that Yohan Cabaye took over for the next one.
The Newcastle midfielder did much better, forcing Iker Casillas into a smart one-handed save just under his crossbar.
Casillas caused just a brief moment of panic in the Spanish defence when he dropped the subsequent corner but the Real Madrid goalkeeper recovered quickly.
Meanwhile, Spain continued trying to pick Les Bleus apart and Laurent Koscielny had to be alert to intercept Fabregas' delightful lofted pass towards Iniesta.
France inexplicably left Gerard Pique unmarked in their own box from a corner and were fortunate the Barcelona defender missed the target with his header.
There was greater energy and urgency about France after the interval, with Benzema almost finding Debuchy in the Spanish box.
Debuchy was then picked out by Ribery but planted his firm header over the bar and Benzema then ran at the Spanish defence before unleashing a shot even worse than his earlier free-kick.
Clichy and Ribery combined neatly down the French left but the ball would not come down for Malouda and Pique cleared Spain's lines.
Spain broke with Xavi trying to release Fabregas but Lloris read the pass well and raced out to the edge of his box to smother the danger in a well-timed challenge.
While France sent on Samir Nasri and Jeremy Menez, Spain introduced Pedro and Torres, who would have combined to double the lead after another beautifully-crafted attack had Koscielny not been on hand with another timely interception.
France were finding some joy down the left flank and Ribery worked his way to the byline before driving a low cross towards Menez, which Casillas just about dealt with.
But a Spanish victory never seemed in doubt from the moment Alonso opened the scoring and it was confirmed in the last minute.
Pedro's quick feet got him into the box, he went down under pressure from Anthony Reveillere and Alonso despatched the spot-kick.
Cities & Stadiums
The Top 3 Teams of Previous Tournaments
|2008||Spain||Germany||Russia / Turkey|
|2004||Greece||Portugal||Netherlands / Czech Republic|
|2000||France||Italy||Netherlands / Portugal|
|1996||Germany||Czech Republic||France / England|
|1992||Denmark||Germany||Netherlands / Sweden|
|1988||Netherlands||Soviet Union||Italy / West Germany|
|1984||France||Spain||Denmark / Portugal|
|1972||West Germany||Soviet Union||Belgium|