France's bid to add the continental championship to their global crown continued in Bruges – but were made to work by Spain, who squandered a glorious late chance to force extra time when Raúl González sent a penalty over the bar.
Zinédine Zidane set Les Bleus on their way just after the half-hour, atoning for an earlier miss with a stunning free-kick. Gaizka Mendieta's penalty restored parity but France were back in front before the interval after a superb run from Patrick Vieira was capped with an even better finish from Youri Djorkaeff.
Back came Spain, chipping away until with a minute to go Fabien Barthez hauled down Abelardo and referee Pierluigi Collina pointed to the spot. Mendieta had been replaced, however, so Raúl stepped up only to miss. There was still time for substitute Ismael Urzaiz to head over the crossbar as France held on to set up a semi-final date with Portugal.
Roger Lemerre's side had begun brightly, content to allow Spain to boss possession in return for having the better of the chances. Patrick Vieira and Thierry Henry had already gone close when, on the quarter-hour, Didier Deschamps turned Josep Guardiola deep inside the Spain half and crossed for Christophe Dugarry; the striker's committed header went over the bar.
The lively Dugarry did test Cañizares after a slick one-two with Djorkaeff, while at the other end Raúl forced Barthez into some frantic back-pedalling with an audacious lob after noticing the goalkeeper off his line. Zidane was then presented with a golden chance to open the scoring when he ghosted into the area unchallenged to meet Dugarry's low pass, only to mis-kick.
He soon made up for it, spearing a right-footed shot into the top corner after Agustín Aranzabal had impeded Djorkaeff. Six minutes later it was all-square as Menideta converted from the spot after Lilian Thuram had brought down Pedro Munitis, but back came France. Djorkaeff restored their lead in some style, rifling past Santiago Cañizares from ten metres.
The onus in the second half was on Spain, but they were restricted to an early Alfonso Pérez opening, long-range efforts from Guardiola and one desperate goalmouth scramble. With Spain's semi-final hopes drifting away, Barthez gave them a lifeline a minute from time; only for Raúl to throw it back.