Alberto Contador won stage four of the Tirreno-Adriatico to close the gap on overall race leader Michal Kwiatkowski to just 16 seconds.
Spaniard Contador won the uphill finish by one second from Nairo Quintana after a brutal 244km race to Cittareale.
Kwiatkowski, who is not as strong a climber as Contador, kept in touch on the 14km ascent to the finish, crossing the line 10 seconds behind the winner.
Quintana moved up to third overall, with Team Sky's Richie Porte fourth.
Kwiatkowski, who rides for Omega Pharma - Quick-Step alongside Mark Cavendish, started the stage with a 10-second lead over another team-mate Rigoberto Uran.
Contador, who started the day 36 seconds adrift of the leader, also picked up 10 bonus seconds for winning the stage to eat into Kwiatkowski's advantage.
The stage came to life in the closing 5km of the final climb with Roman Kreuziger setting a furious pace and racing clear, however, with Tinkoff-Saxo team-mate Contador in the chasing bunch, he sat up.
Porte took up the pace in the closing kilometre but with the finish line in sight, Contador, who is one of only five riders to have won all three Grand Tours - Giro d'Italia, Tour de France and Vuelta a Espana - kicked and opened up a gap on the rest.
Colombian Quintana was the only rider who could come close to matching Contador's pace as he crossed the line a couple of bike lengths adrift.
Australian Porte, who is leading the Team Sky challenge in the absence of injured Tour de France champion Chris Froome, finished fifth.
Sunday's fifth stage will cover 192km between Amatrice and Guardiagrele
The race ends on Tuesday with an individual time-trial in San Benedetto del Tronto.
Stage 4 result:
1. Alberto Contador (Spa/Tinkoff - Saxo) 6:39:56"
2. Nairo Quintana (Col/Movistar) +1"
3. Daniel Moreno (Spa/Katusha) +5"
4. Roman Kreuziger (Cze/Tinkoff - Saxo)
5. Richie Porte (Aus/Team Sky)
1. Michal Kwiatkowski (Pol/Omega Pharma - Quick-Step) 16:06:42"
2. Alberto Contador (Spa/Tinkoff - Saxo) +16"
3. Nairo Quintana (Col/Movistar) +23"
4. Richie Porte (Aus/Team Sky) +34"
5. Rigoberto Uran (Col/Omega Pharma - Quick-Step) +38"