France 2-1 Portugal
A controversial Zinedine Zidane penalty in extra time took France into the European Championship final.
Portugal and Everton defender Abel Xavier was ajudged to have handled the ball on the by-line after substitute David Trezeguet had crossed with six minutes left.
Earlier, Thierry Henry had come to France's rescue in the King Baudouin Stadium, just as their hopes of adding the European title to their global crown appeared to be slipping away.
When Benfica's Nuno Gomes, the man who had dealt England a devastating blow in Eindhoven, took advantage of a criminal lapse in concentration by Didier Deschamps, the World Cup holders faced a fight for survival.
But with Zidane emerging as the clear winner of his personal duel with Luis Figo, France's unquenchable desire came to the fore, even if the game never came close to the heights that had been promised beforehand.
It was no surprise that Henry put them back on terms to earn the tournament's first bout of nerve-jangling golden goal extra-time - with the Arsenal striker turning quite superbly to fire home from Nicolas Anelka's low cross.
Roger Lemerre's side, inspired by the genius of Zidane, kept on coming. But, with Portugal more resourceful at the back than had been suggested earlier in the tournament, they held on to take the game into an additional 30 minutes.
Such had been the style of both team's progress, the scene had seemed set for a night to remember.
For Portugal, it represented the chance to avenge Marseille 1984, when the side known as 'The Patricians' had suffered in extra time at the hands of the four French musketeers - Platini, Giresse, Tigana and Fernandez.
Yet for Humberto Coelho's side to earn their place in Sunday's final in Rotterdam, they had to end a 25-year wait since their last victory over the French, which came in Paris.
Despite the swagger of their quarter-final win over Turkey, Coelho left out Joao Pinto and Paulo Bento, with Everton's Abel Xavier in at right back and Lazio's Sergio Conceicao joining Figo and Manuel Rui Costa in the most attack-minded of midfields.
Yet there seemed a degree of caution about France's line-up as they reverted to two up with a past and present Arsenal strikeforce of Henry and Anelka. Emmanuel Petit returned after injury in midfield alongside High-bury team-mate Patrick Vieira and Deschamps.
Initially at least, the weight of expectation was unfulfilled. Portugal seemed nervous, with Figo not receiving enough of the ball, and although Rui Costa did jink his way into space a couple of times there was no end product.
France were not sparkling either - Zidane more peripheral than he or Roger Lemerre would have wanted. Yet, with the pace of Henry and Anelka a constant menace, the world champions looked to have more purpose about them.
Deschamps was the first player to test either keeper, receiving from Bixente Lizarazu and shooting at Vitor Baia from 20 yards. Vitor Baia then rushed from his line to beat Henry to Zidane's hooked pass.
The French seemed to be settling into their rhythm but were then struck to the quick by Portugal's first serious attack. Sergio Conceicao deserved plaudits for his persistence, although when the ball looped towards Deschamps the danger appeared to have been averted.
Yet, for whatever reason, Deschamps hesitated, clearly unaware that the Lazio man had continued his run. It was a fatal error with Sergio Conceicao nudging possession towards Nuno Gomes, who turned instantly to hammer his left-footer between Fabien Barthez and his right-hand upright from 20 yards.
Barthez looked perplexed while Deschamps looked to blame somebody else, but he had to take responsibility for the error.
If Portugal's belief had been in doubt, there were no arguments now. Figo began to look for the ball with more intensity and Petit in particular began to get frustrated, waving his arms around when a free-kick on half-way went against him. Vieira was rightly cautioned for going through Figo from behind.
Yet this French team expects to dig itself out of any situation and duly moved up a gear. Whenever Henry or Anelka were in full stride the palpitations of Fernando Couto and his colleagues were evident.
Laurent Blanc should have done better when he ghosted onto the end of a Petit free-kick and then Anelka roared outside left-back Dimas only to fire at Vitor Baia.
As Rui Costa found space and induced a booking for Marcel Desailly, Portugal were looking to hit on the counter. Portugal's lead was wiped out within five minutes of the restart.
Anelka should have been flagged offside as he went beyond Dimas to receive from Lilian Thuram. Then Henry's turn was superb and the finish, right footed and deadly, arrowed into the bottom corner for his third goal of the tournament.
Portugal looked in desperation to the linesman yet now it was the French in command. Having equalised, Lemerre's team seemed to have that extra ingredient - undeniable belief in their ability to win.
France (4-3-1-2): Barthez; Thuram, Desailly, Blanc, Lizarazu; Vieira, Deschamps, Petit (Pires 86); Zidane; Henry (Trezeguet 105), Anelka (Wiltord 71).
Booked: Desailly, Vieira
Portugal (4-2-3-1): Baia; Xavier, Couto, Jorge Costa, Dimas (Rui Jorge 91); Vidigal, Costinha; Conceicao, Rui Costa (Joao Pinto 77), Figo; Gomes.
Booked: Figo, Dimas, Joao Pinto.
Sent off: Nuno Gomes
Referee: Gunter Benko (Austria)
Man of the Match: Zinedine Zidane