Britain's Chris Froome won the fourth stage of the Tirreno-Adriatico in Italy to move up to second overall.
The Team Sky rider attacked in the final kilometre to win the uphill finish from Italian duo Mauro Santambrogio and Vincenzo Nibali.
Polish rider Michal Kwiatkowski finished fourth to take the overall lead from Britain's Mark Cavendish.
He is four seconds ahead of Froome with Nibali 16 seconds behind, while Alberto Contador is fourth, 30 seconds back.
Spaniard Contador attacked several times on the final climb to the summit of Prati di Tivo but Froome, who was paced up the mountain by team-mates Dario Cataldo, Sergio Henao and Rigoberto Uran made the decisive move in the last kilometre.
"I only ended up doing a kilometre in the wind myself," said Froome, who is targeting the Tour de France in July. "It really was an armchair ride. To have the guys with me on the climb - Rigo, Sergio and Dario - to have them pulling for me when guys like Nibali and Contador are attacking is a really good feeling.
"I think everyone was hurting up at the top there. I had a little bit left to go in that last k and that was down to the work that was done by the rest of the guys during the day."
Froome finished six seconds clear of Santambrogio, 11 ahead of Nibali and 13 in front of Kwiatkowski and his strong showing bodes well for his Tour de France chances later this year.
The Kenyan-born Briton, who finished second behind team-mate Bradley Wiggins in last year's Tour, will be Sky's team leader in 2013 with Wiggins concentrating on May's Giro d'Italia.
Cavendish led going into Saturday's stage but the mountainous terrain was never going to suit the sprint specialist and he tumbled down the standings to be succeeded as race leader by Omega Pharma QuickStep team-mate Kwiatkowski.
Sunday's fifth stage is a 230km race from Ortona to Chieti featuring two medium climbs and then another uphill finish with a short but very steep climb at gradients up to 19%, or one-in-five.
The week-long race ends on Tuesday with an individual time trial in San Benedetto del Tronto.