Daniel Moreno won stage nine of the Vuelta a Espana to take the overall race lead off Ireland's Nicolas Roche.
Spain's Moreno, 31, beat Roche by eight seconds and picked up 10 bonus seconds as stage winner to clear his 17-second deficit and lead by one second.
The Katusha rider produced a terrific turn of pace to ride away from his rivals on a final kilometre climb that featured 30% gradients in places.
Team Sky's solitary British rider Luke Rowe was in the day's five-man break.
However, his effort came to nought as he and his fellow escapees were caught with a little over 25km remaining of the 163.7km race from Antequera to Valdepenas de Jaen.
Rowe's team-mate Edvald Boasson Hagen then made a move with 17km remaining, towards the top of a category-two hill, but he was unable to open up a big enough gap on the descent and was caught before the riders hit the final climb.
Moreno, who also won stage four, was the first to attack on the tough finishing ascent and quickly opened up an advantage of a few seconds.
He was able to maintain the lead as he beat fellow Spaniards Alejandro Valverde and Joaquim Rodriguez, who finished second and third, by four seconds.
Roche needed to finish within seven seconds to retain his lead but the clock ticked over to eight as he crossed the line in fourth.
This year's Giro d'Italia winner Vincenzo Nibali came in nine seconds behind Moreno, losing another five seconds of his advantage over fellow race favourites Valverde and Rodriguez. The Italian is third overall, 20 seconds behind the race leader.
Monday's mountainous 10th stage takes the riders 186.8km from Torredelcampo to a summit finish at Guejar Sierra Alto Hazallanas.
Result of stage nine
Daniel Moreno (Spain / Katusha) 4:18:57"
Alejandro Valverde (Spain / Movistar) +4"
Joaquim Rodriguez (Spain / Katusha)
Nicolas Roche (Ireland / Saxo - Tinkoff) +8"
Samuel Sanchez (Spain / Euskaltel) +9"
Rinaldo Nocentini (Italy / AG2R)
Vincenzo Nibali (Italy / Astana)
Philippe Gilbert (Belgium / BMC Racing) +13"
Warren Barguil (France / Argos)
Igor Anton (Spain / Euskaltel) +15"
Overall standings after nine stages
Daniel Moreno (Spain / Katusha) 35:58:34"
Nicolas Roche (Ireland / Saxo - Tinkoff) +1"
Vincenzo Nibali (Italy / Astana) +20"
Alejandro Valverde (Spain / Movistar) +22"
Chris Horner (U.S. / RadioShack) +28"
Joaquim Rodriguez (Spain / Katusha) +56"