Alejandro Valverde won a three-man battle to the summit finish to clinch stage eight of the Vuelta a Espana.
Valverde edged race leader and fellow Spaniard Joaquin Rodriguez with countryman Alberto Contador third.
Rodriguez picked up another 23 seconds to stretch his overall lead on Britain's Chris Froome to 33 seconds.
Froome was fourth to maintain his second place in the standings with Contador seven seconds further back in third and Valverde fourth.
Movistar rider Valverde added the 174.7km ride from Lleida to Collada de la Gallina in Andorra to his win in the third stage in Alcaniz.
A number of early attacks kept the pace high before a six-man group, featuring no riders from any of the leading teams, was allowed to escape up the road.
As the race reached the closing stages Team Sky hit the front to try to set up Froome for the finish, but the final 18 hairpins proved decisive as only a small group of overall title contenders were left.
Contador, winner of the Vuelta in 2008, looked set to grab the stage win after opening up a gap of about 100m, but Rodriguez and Valverde caught him to set up the final dash for the line as Froome came home 15 seconds adrift.
"Today was tough, I'm just glad I got through it without losing too much time," said Froome, the Tour de France runner-up and Olympic time trial bronze medallist.
"The time trial (on Wednesday) will be very important, but the three big mountain stages matter just as much."
Valverde added: "The four strongest riders in the race were all up there, but it's too close to say which of us is the best yet.
"One day it's me, the next it's Alberto or Froome. It's very close."
Sunday's stage takes the peloton from Andorra on a 194-km ride to the Catalan capital of Barcelona prior to the race's first rest day on Monday.
The Vuelta finishes on Sunday 9 September in Madrid.
Stage eight results:
1. Alejandro Valverde (Spa/Movistar) 4:06:39"
2. Joaquin Rodriguez (Spa/Katusha) ST
3. Alberto Contador (Spa/Saxo Bank)
4. Chris Froome (GB/Team Sky) +15"
5. Daniel Moreno (Spa/Katusha) +23"
General classification after eight stages:
1. Joaquin Rodriguez (Spa/Katusha) 29:59:35"
2. Chris Froome (GB/Team Sky) +33"
3. Alberto Contador (Spa/Saxo Bank) +40"
4. Alejandro Valverde (Spa/Movistar) +50"
5. Robert Gesink (Ned/Rabobank) +1:41"
6. Daniel Moreno (Spa/Katusha) +1:48"
7. Nicolas Roche (Ire/AG2R) +2:14"
8. Igor Anton (Spa/Euskaltel) +2:47"
9. Laurens ten Dam (Ned/Rabobank) +2:58"
10. Bauke Mollema (Ned/Rabobank) +3:07"