TROPEA, Italy -- Oscar Gatto fought off a late charge from race favorite Alberto Contador to win the eighth stage of the Giro d'Italia on Saturday, and Pieter Weening kept the overall lead.
Gatto attacked on the final climb to the finish and only Contador broke from the pack to chase him.
"I'm a sprinter, but I've always liked finishes like this, slightly uphill and technically difficult," Gatto said. "I looked around once but didn't see anyone. Then when I looked again, I saw it was a Saxo Bank and thought, 'I wonder if it's Contador.'
"I was slightly worried because I knew I didn't have much left for an eventual sprint. But when I checked one last time near the line, I knew I'd got it and began celebrating."
The pair finished the 134.5-mile stage that began in Sapri in 4 hours, 59 minutes, 45 seconds, while Alessandro Petacchi led home the chasing pack to finish 5 seconds behind in third.
Weening finished in the pack to keep the pink jersey for the fourth consecutive day with an overall time of 28:09:49. He led Kanstantsin Sivtsov of Belarus and Marco Pinotti of Italy by 2 seconds.
"Today for me and the team it was simple, only the finish was going to be hard," Weening said. "There were a lot of climbers and I had to be in the front because there could have been a lot of time gaps."
Contador's second-place finish lifted him to fifth overall, 13 seconds behind Weening.
"First of all, I want to acknowledge the great work done by my team which kept me in contention until the very end and, because of this, I was able to take a few seconds [off]," Contador said. "It was a dangerous finish so we knew we had to be aware."
Mirko Selvaggi and Leonardo Giordani went on the attack little more than a mile from the start and opened up a lead of 10:50.
The pair held their advantage until just over 10 miles from the finish when the sprinters in the peloton finally hauled them in. Gatto shot from the pack with 1½ miles remaining and even Contador's best efforts were not enough to stop him.
The Giro continues Sunday with a 104.7-mile mountain stage from Messina to Mount Etna, an active volcano that spewed ash overnight Thursday. The ninth stage features two climbs on the volcano, including one to the finish at 6,207 feet above sea level.
The 2009 Giro also had a stage end atop volcano -- Mount Vesuvius in Naples.
The 21-stage race finishes in Milan on May 29.