Spaniard Joaquim Rodriguez took the 10th stage of the Giro d'Italia and in the process snatched the pink jersey from rival Ryder Hesjedal.
Rodriguez attacked close to the line and finished ahead of Bartsz Huzarski and Giovanni Visconti at the end of the race from Civitavecchia to Assisi.
The Katusha rider now leads Canadian racer Hesjedal by 17 seconds overall.
Team Sky sprinter Mark Cavendish moved one point closer to the points jersey and is three adrift of Matthew Goss.
Rodriguez, 33, won the Fleche-Wallonne in April and was dominant on the climbs. He overhauled Dutchman Tom-Jelle Slagter in Assisi's tiny streets to ensure his first Giro stage victory.
"My first thought and thanks today go to my team," said Rodriguez. "They rode their hearts out to make sure I was exactly where I needed to be in the last kilometre."
Asked if he could win the Giro - a race he finished fifth last year - he said: "I will try my best. The podium's the objective for now.
"It's not too early for me to lead. Whatever happens, happens, but I know I'm going home with at least one leader's jersey in my suitcase."
Team Sky's Rigoberto Uran moved into the top 10 after finishing 10th while team-mate and fellow countryman Sergio Henao took 13th place to move to 14th in the overall standings.
Cavendish hopes to make up further ground on Goss (Orica-GreenEDGE) in the 11th stage on Wednesday when the riders take on a 255km largely flat course, with two climbs, from Assisi to Montecatini Terme, in Tuscany. The race finishes on 27 May in Milan.
1. Joaquin Rodriguez, (Spa, Katusha)
2. Ryder Hesjedal (Can, Garmin-Barracuda) at 17 secs
3. Paolo Tiralongo (Ita, Astana) at 32 secs
4. Roman Kreuziger, (Cze, Astana) at 52 secs
5. Benet Intxausti Elorriaga (Spa, Movistar) at 57 secs
1. Matthew Goss (Australia / Orica) 65 points
2. Mark Cavendish (Britain / Team Sky) 62
3. Joaquim Rodriguez (Spain / Katusha) 55
4. Domenico Pozzovivo (Italy / Colnago - CSF) 49
5. Miguel Angel Rubiano (Colombia / Androni Giocattoli) 36