Les coureurs parcourent deux départements, l'Isère et surtout les Hautes-Alpes. Après la montée du col du Lautaret (1ère catégorie), ils doivent descendre sur Briançon. Puis c'est la montée du col d'Izoard (hors catégorie). Pour rallier Gap, il reste deux côtes de deuxième et troisième catégorie, respectivement la côte de Saint-Apollinaire et la côte de la Rochette.
L'échappée se forme dans le col du Lautaret avec Di Luca, Casero, Garmendia, Jaksche, López de Munain, Parra et Pellizotti, tandis que l'US Postal contrôle le peloton. Juan Miguel Mercado sort du peloton dans le col d'Izoard ; Aitor Garmendia attaque en tête avant le sommet et fait la descente seul. Il est repris par les poursuivants qui ont jusqu'à six minutes d'avance. Casero, Jaschke et Parra continuent en tête. Dans le peloton emmené par US Postal, Astarloza et Millar attaquent.
La désunion condamne l'échappée dans la côte de la Rochette. Vinokourov attaque et il revient rapidement sur Jaksche et Parra, puis il passe le sommet 15 secondes avant le groupe Armstrong. Il descend sur Gap et gagne l'étape.
À noter l'abandon de Joseba Beloki, 2e au classement général, qui a déjanté et chuté dans la descente de cette côte. Lancé à la poursuite de Vinokourov, Lance Armstrong talonne l'Espagnol au moment de sa chute violente dans une épingle. Il l'évite... en coupant à travers champ. Arrivé en contrebas, il met pied à terre, franchit le talus et repart aussitôt pour terminer quatrième de l'étape. L'Américain conserve le maillot jaune, et Vinokourov progresse au général, passant de la 4e à la 2e place.