1. Claus M. Moller (Den) Maia-MSS 25 pts
2. Gustavo Otero (Spa) Porta da Ravessa 20
3. Andrei Zintchenko (Rus) LA Pecol 16
4. Luis Perez (Spa) Vitalicio Seguros 14
5. Eladio Jimenez (Spa) Banesto 12
6. Youri Sourkov (Rus) LA Pecol 10
7. José Azevedo (Por) Maia-MSS 9
8. Vitor Gamito (Por) Porta da Ravessa 8
9. Marzio Bruseghin (Ita) Banesto 7
10. Cândido Barbosa (Por) Banesto 6
11. Rui Sousa (Por) Porta da Ravessa 5
12. Joaquim Sampaio (Por) Porta da Ravessa 4
13. Juan Mercado (Spa) Vitalicio Seguros 3
14. Melchor Mauri (Spa) Sport Lisboa e Benfica 2
15. Marco Serpellini (Ita) Lampre-Daikin 1
Mountains:
Alto Carreiro, 8.3 km, cat 3
1. Felix Cardenas (Col) Kelme-Costablanca 6
2. Philippe Fernandes (Fra) LA Pecol 4
3. Rui Sousa (Por) Porta da Ravessa 2
4. Pedro Cardoso (Por) Maia-MSS 1
1. Youri Sourkov (Rus) LA Pecol 29
2. Pedro Martins (Por) Gresco Tavira 73
3. Fortunato Baliani (Ita) Selle Italia-Nectar 82
4. Jorge Capitán (Spa) Troiamarisco Matesica 118
5. Miguel Suarez (Spa) PRM Tintas VIP Antarte 119
Young riders classification:
1. Juan Mercado (Spa) Vitalicio Seguros
2. Oscar Pereiro (Spa) Porta da Ravessa
3. Hugo Lúcio (Por) Sport Lisboa e Benfica
4. Nuno Ribeiro (Por) Barbot Torrié
5. Bruno Castanheira (Por) LA Pecol