Après un début d'étape musclé qui voit notamment Joan Horrach (Milaneza-MSS) passer en tête de l'Alto de la Madera, une échappée de quatre coureurs se forme le kilomètre 26 avec les EspagnolsPedro Horrillo (Quick Step-Davitamon), Constantino Zaballa (Kelme-Costa Blanca) et César García (Labarca-2-Café Baqué) et l'Italien Cristian Pepoli (Saeco). Lors du premier sprint intermédiaire à Langreo remporter par Zaballa, ils possèdent un peu plus d'une minute d'avance sur le peloton. Alors qu'Horrillo craque dans l'Alto de la faya de los Lobos, les trois échappées conservent environ deux minutes d'avance à 80 kilomètre de l'arrivée, Zaballa étant leader virtuel de l'épreuve.
Sous l'influence de l'équipe ONCE-Eroski, l'écart se met brutalement à chuter et les échappées sont repris au kilomètre 98. Le rythme du peloton est très fort notamment sous les relais de Jörg Jaksche et de Mikel Pradera et il explose en deux groupes distincts. Dans le second groupe, on retrouve notamment Alex Zülle (Phonak Hearing Systems), José Luis Rubiera (US Postal Service-Berry Floor) et Levi Leipheimer (Rabobank) mais malgré le travail de l'équipe de ce dernier, ils n'arriveront pas à rentrer sur le groupe de tête, perdant plus de onze minutes à l'arrivée.
C'est sous l'impulsion de l'équipe Kelme que le peloton aborde la dernière difficulté du jour, l'Alto del Mirador del Fito, une montée de neuf kilomètre à 6.3% de pente moyenne. C'est à ce moment-là que Luis Pérez Rodríguez (Cofidis-Le Crédit par Téléphone) et Carlos Sastre s'extirpent du groupe de tête, emmenant avec eux plusieurs coureurs dont Isidro Nozal (ONCE-Eroski). Le duo passe le sommet en tête avec trente secondes d'avance sur le peloton. Réussissant à conserver une certaine marge de manœuvre dans la descente, ils se disputent la victoire d'étape à Cangas de Onís. A ce jeu, c'est Luis Pérez Rodríguez le plus fort, remportant donc l'étape et sa première victoire professionnelle devant Sastre et Alejandro Valverde (Kelme-Costa Blanca) qui règle le sprint du peloton quatorze secondes après les deux premiers.
Comme il devance Igor González de Galdeano au classement de l'étape, Joaquim Rodríguez (ONCE-Eroski) s'empare du maillot or de leader du classement général dans le même temps que son coéquipier. Sa cinquième place sur l'étape lui permet également de prendre la tête du classement par points.
Grâce à sa cinquième place au classement de l'étape, l'EspagnolJoaquim Rodríguez s'empare du maillot or de leader de cette Vuelta au détriment de son coéquipier Igor González de Galdeano qui reste à la seconde place dans le même temps. Il devance donc au classement général trois coureurs de l'équipe ONCE-Eroski, leurs compatriotes Isidro Nozal et Marcos Serrano étant troisième et quatrième du classement à une seconde.
Grâce à sa première place au passage au sommet de la troisième difficulté de l'étape, l'Alto Mirador del Fito classée en première catégorie, l'EspagnolLuis Pérez Rodríguez (Cofidis-Le Crédit par Téléphone) s'empare du maillot orange de leader du classement de la montagne. Il devance son compatriote Carlos Sastre (CSC) et César García (Labarca-2-Café Baqué), membre de l'échappée, qui lui profite des dix points remportés au sommet de l'Alto de la faya de los Lobos (2e catégorie).
Au classement par équipes, l'équipe ONCE-Eroski conserve sa première place et creuse quelque peu son avance. iBanesto.com s'empare de la deuxième place au profit de l'US Postal Service-Berry Floor alors que l'équipe [[équipe cycliste Euskaltel-Euskadi|Euskaltel-Euskadi]] rentre dans le top 5 du classement.