France booked a World Cup final spot against Italy after Zinedine Zidane's first-half penalty earned victory over a disappointing Portugal in Munich.
Zidane celebrates with his team-mates after the winning penalty
Zidane struck coolly past Ricardo on 33 minutes after Thierry Henry was tripped inside the box by Ricardo Carvalho.
Henry saw another shot trickle wide and Franck Ribery forced Ricardo to save.
Luis Figo and Deco saw shots saved by Fabien Barthez and Figo nodded over late on, but France stayed in control and thoroughly deserved their win.
Raymond Domenech's side will now play Italy in the final in Berlin on Sunday at 1900 BST.
The final will be Zidane's last game before he retires from professional football and is a chance to win his second World Cup after the 1998 triumph on home soil.
Zidane's influence on proceedings was not quite as substantial as in the previous rounds against Spain or Brazil, but apart from a lively start Portugal rarely looked like ending their French curse.
They have not beaten France since 1975 and have still never beaten them in a major competition.
But Luiz Felipe Scolari - who lost his 100% record as a coach at World Cup finals - saw his side begin well, with Deco and Figo both forcing saves from Fabien Barthez with low 20-yard drives.
Cristiano Ronaldo was being roundly booed every time he touched the ball after his histrionics against England, but he was in fine form and twice had shots blocked as he surged at the French defence.
Having made a slow start, Domenech's side clinically took the lead just after the half hour mark.
Zidane's first-half penalty nestles in the back of Ricardo's net
Henry turned exquisitely just inside the area and was brought down by Carvalho, Zidane stepping up to decisively strike the penalty past Ricardo, who managed to get a hand on it.
Ronaldo tried to win a spot-kick of his own moments later, but his theatrical dive under the slightest challenge from Willy Sagnol was ignored by referee Jorge Larrionda.
Henry had a chance straight after the restart to double the lead, but after twisting and turning in the box his shot squirmed under Ricardo and out for a corner.
Portugal looked far from threatening with the out-of-sorts Pauleta on his own up front and Ricardo had to save Ribery's drive as France stayed in control.
The second half was a dire affair, scrappy and lacking any real creativity - it suited the French down to a tee because they never let Portugal back into the game.
Their best chance was down to Barthez. He bizarrely parried a Ronaldo free-kick into the air but from six yards Figo could only head the rebound over.
Figo and his team-mates tired badly and they simply could not muster a late rally to provide the French with any sort of threat.
Scolari furiously marched onto the pitch at the final whistle to remonstrate with referee Larrionda, but had little reason to complain.
The 57-year-old, who had won 12 World Cup games in a row as coach of Brazil and Portugal, was finally left to suffer the bitter taste of defeat.
Portugal: Ricardo, Miguel (Paulo Ferreira 63), Meira, Ricardo Carvalho, Nuno Valente, Costinha (Postiga 74), Maniche, Deco, Ronaldo, Pauleta (Simao 68), Figo.
Subs Not Used: Boa Morte, Caneira, Nuno Gomes, Paulo Santos, Quim, Ricardo Costa, Tiago, Viana.
Booked: Ricardo Carvalho.
France: Barthez, Sagnol, Thuram, Gallas, Abidal, Ribery (Govou 72), Vieira, Zidane, Makelele, Malouda (Wiltord 69), Henry (Saha 85).
Subs Not Used: Boumsong, Chimbonda, Coupet, Dhorasoo, Diarra, Givet, Landreau, Silvestre, Trezeguet.
Goals: Zidane 33 pen.
Ref: Jorge Larrionda (Uruguay).
Fifa man of the match: Lilian Thuram
France won their 50th World Cup match, to reach the final for the second time and put themselves on course to join a select group of five nations who have won the World Cup on at least two occasions. At an average age of 30 years and 10 days, France's starting line-up was the second oldest ever in a World Cup semi-final.
Zinedine Zidane scored the fourth World Cup goal of his career and his second at this tournament. The last competitive match between these teams was also decided by a Zidane score. He netted a golden goal in the 117th minute of the semi-final of Euro 2000 to put France into the final.
Portugal's defeat brought to an end their 17 match unbeaten run in competitive matches, and marked a first ever World Cup defeat for coach Luiz Felipe Scolari. It was the 13th time the Brazilian had sent out a side in the finals.
Trivia stats source: Infostrada Sports