George Hincapie outsprinted Oscar Pereiro to win his first Tour de France stage as team captain Lance Armstrong tightened his grip on the race lead.
The American, one of Armstrong's top "domestiques", sat at the back of a 14-man break on a brutal day of climbs.
But when it became clear that Armstrong would not catch him, he was given the all-clear to pursue a stage 15 victory.
Armstrong finished strongly with Ivan Basso, who stole second place overall from battling Dane Mickael Rasmussen.
The biggest crowds of this year's race were baying for a Spanish victory in the Pyrenees.
Pereiro came closest to providing it when he struck for home on the last "hors category" climb of a day that also included four category one ascents.
The Spaniard shook off all fellow escapees except for the stubborn Hincapie, who sat on his wheel to the top before forging past 200m from the line.
Their memorable duel was matched by fascinating battles further down the Pla-d'Adet.
In-form Italian Basso, who had launched a stinging attack on the previous mountain, set a faster pace than anyone bar Armstrong, who matched him pedal for pedal.
They finished the 220km stage five minutes behind Hincapie and Pereiro.
As the pair reeled in fatigued stragglers from the break - which splintered from the peloton after just 27km - they opened up time on all other rivals, including Jan Ullrich, who lost more than a minute.
Behind, Rasmussen looked in danger of slipping out of the top three on the general classification.
He lost too much time to Basso, but weathered Ullrich's attack as other contenders Levi Leipheimer, Francisco Mancebo and Alexandre Vinokourov were left strewn out along the course.
Afterwards Armstrong called it a "perfect day" for him and his Discovery team.
"Hincapie is my biggest guy, my biggest friend on the team," he said.
Fighting back the tears, Hincapie, who has been a loyal servant to Armstrong during his era of domination, said: "This is a dream for me.
"My plan was to join an early breakaway then take some lead and help Lance," he said.
"Then we found we had an 18-minute lead and (manager) Johan (Bruyneel) said they won't catch you, do your own race.
"I'd previewed the stage a month ago. When I finished the last climb at the time, I was dead. That's why I tried to save energy, knowing how tough it was."
But there were no celebrating in the T-Mobile camp as Ullrich's hopes of overall victory are virtually over now.
The T-Mobile rider ended the day still in fourth but a massive 5 minutes 56 seconds adrift of Armstrong.
Basso - in second overall - is 2:46 behind the American, but conceded he can do little to prevent Armstrong taking an unprecedented seventh consecutive victory.
"I gave it everything," Basso said, "but Armstrong is too strong. He never weakens."
Stage 15 result:
1. George Hincapie (US / Discovery Channel) 6:06:38"
2. Oscar Pereiro (Spain / Phonak) +6"
3. Pietro Caucchioli (Italy / Credit Agricole) +38"
4. Michael Boogerd (Netherlands / Rabobank) +57"
5. Laurent Brochard (France / Bouygues Telecom) +2:19"
6. Ivan Basso (Italy / Team CSC) +5:04"
7. Lance Armstrong (US / Discovery Channel)
8. Oscar Sevilla (Spain / T-Mobile) +6:28"
9. Jan Ullrich (Germany / T-Mobile)
10. Mickael Rasmussen (Denmark / Rabobank) +6:32"
1. Lance Armstrong (US / Discovery Channel) 62:09:59"
2. Ivan Basso (Italy / Team CSC) +2:46"
3. Mickael Rasmussen (Denmark / Rabobank) +3:09"
4. Jan Ullrich (Germany / T-Mobile) +5:58"
5. Francisco Mancebo (Spain / Illes Balears) +6:31"
6. Levi Leipheimer (US / Gerolsteiner) +7:35"
7. Floyd Landis (United States / Phonak) +9:33"
8. Alexandre Vinokourov (Kazakhstan / T-Mobile) +9:38"
9. Christophe Moreau (France / Credit Agricole) +11:47"
10. Andreas Kloeden (Germany / T-Mobile) +12:01"