Xabi Alonso celebrated his 100th international cap with both goals as Spain saw off France 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, while France were struggling to keep possession.
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.
There was greater energy and urgency about France after the interval, with Karim Benzema almost finding Debuchy in the Spanish box. Debuchy was then picked out by Franck Ribery but planted his firm header over the bar.
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.
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.