Clasificación de la vigésimo primera y última etapa
1. Alessandro Petacchi (ITA / Fassa Bortolo) 3h.34:41
2. Erik Zabel (ALE / T.Mobile) m.t.
3. Heinrich Haussler (ALE / Gerolsteiner) m.t.
4. Samuel Sánchez (ESP / Euskaltel Euskadi) m.t.
5. Jimmy Casper (FRA / Cofidis) m.t.
6. Gert Steegmans (BEL / Davitamon Lotto) m.t.
7. Bram De Groot (HOL / Rabobank) m.t.
8. Michael Barry (CAN / Discovery Channel) m.t.
9. Arnaud Coyot (FRA / Cofidis) m.t.
10. René Haselbacher (AUT / Gerolsteiner) m.t.
11. Gilberto Simoni (ITA / Lampre) m.t.
12. Francisco José Ventoso (ESP / Saunier Duval) m.t.
13. Pablo Lastras (ESP / Illes Balears) m.t.
14. Rafael Nuritdinov (UZB / Domina Vacanze) m.t.
15. Mauricio Ardila (COL / Davitamon Lotto) m.t.
16. Marco Zanotti (ITA / Liquigas Bianchi) m.t.
17. Constantino Zaballa (ESP / Saunier Duval) m.t.
18. Nacor Burgos (ESP / Relax Fuenlabrada) m.t.
19. Hervé Duclos-Lassalle (FRA / Cofidis) m.t.
20. Luis Pasamontes (ESP / Relax Fuenlabrada) m.t.
2. Erik Zabel (ALE / T.Mobile) m.t.
3. Heinrich Haussler (ALE / Gerolsteiner) m.t.
4. Samuel Sánchez (ESP / Euskaltel Euskadi) m.t.
5. Jimmy Casper (FRA / Cofidis) m.t.
6. Gert Steegmans (BEL / Davitamon Lotto) m.t.
7. Bram De Groot (HOL / Rabobank) m.t.
8. Michael Barry (CAN / Discovery Channel) m.t.
9. Arnaud Coyot (FRA / Cofidis) m.t.
10. René Haselbacher (AUT / Gerolsteiner) m.t.
11. Gilberto Simoni (ITA / Lampre) m.t.
12. Francisco José Ventoso (ESP / Saunier Duval) m.t.
13. Pablo Lastras (ESP / Illes Balears) m.t.
14. Rafael Nuritdinov (UZB / Domina Vacanze) m.t.
15. Mauricio Ardila (COL / Davitamon Lotto) m.t.
16. Marco Zanotti (ITA / Liquigas Bianchi) m.t.
17. Constantino Zaballa (ESP / Saunier Duval) m.t.
18. Nacor Burgos (ESP / Relax Fuenlabrada) m.t.
19. Hervé Duclos-Lassalle (FRA / Cofidis) m.t.
20. Luis Pasamontes (ESP / Relax Fuenlabrada) m.t.
Clasificación general final
1. Roberto Heras (ESP / Liberty Seguros) 82h.22:55
2. Denis Menchov (RUS / Rabobank) a 4:36
3. Carlos Sastre (ESP/ CSC) a 4:54
4. Francisco Mancebo (ESP / Illes Balears) a 5:58
5. Carlos G. Quesada (ESP / Comunidad Valenciana) a 8:06
6. Rubén Plaza (ESP / Comunidad Valenciana) a 11:36
7. Óscar Sevilla (ESP / T.Mobile) a 13:22
8. Tom Danielson (USA / Discovery Channel) a 16:38
9. Mauricio Ardila (COL / Davitamon Lotto) a 18:15
10. Juan Miguel Mercado (ESP / Quick.Step) a 18:31
11. Samuel Sánchez (ESP / Euskaltel) a 20:12
12. Michele Scarponi (ITA / Liberty Seguros) a 31:44
13. David Blanco (ESP / Comunidad Valenciana) a 34:57
14. Koos Moerenhout (HOL / Davitamon Lotto) a 35:03
15. Josep Jufré (ESP / Relax Fuenlabrada) a 35:33
16. Mario Aerts (BEL / Davitamon Lotto) a 36:18
17. Daniel Atienza (ESP / Cofidis) a 36:23
18. Unai Osa (ESP / Illes Balears) a 37:14
19. Marcos Serrano (ESP / Liberty Seguros) a 38:37
20. Pablo Lastras (ESP / Illes Balears) a 40:45
2. Denis Menchov (RUS / Rabobank) a 4:36
3. Carlos Sastre (ESP/ CSC) a 4:54
4. Francisco Mancebo (ESP / Illes Balears) a 5:58
5. Carlos G. Quesada (ESP / Comunidad Valenciana) a 8:06
6. Rubén Plaza (ESP / Comunidad Valenciana) a 11:36
7. Óscar Sevilla (ESP / T.Mobile) a 13:22
8. Tom Danielson (USA / Discovery Channel) a 16:38
9. Mauricio Ardila (COL / Davitamon Lotto) a 18:15
10. Juan Miguel Mercado (ESP / Quick.Step) a 18:31
11. Samuel Sánchez (ESP / Euskaltel) a 20:12
12. Michele Scarponi (ITA / Liberty Seguros) a 31:44
13. David Blanco (ESP / Comunidad Valenciana) a 34:57
14. Koos Moerenhout (HOL / Davitamon Lotto) a 35:03
15. Josep Jufré (ESP / Relax Fuenlabrada) a 35:33
16. Mario Aerts (BEL / Davitamon Lotto) a 36:18
17. Daniel Atienza (ESP / Cofidis) a 36:23
18. Unai Osa (ESP / Illes Balears) a 37:14
19. Marcos Serrano (ESP / Liberty Seguros) a 38:37
20. Pablo Lastras (ESP / Illes Balears) a 40:45