The Androni Giocattoli-Venezuela rider outpaced his fellow Italian Francesco Chicchi (Omega Pharma-Quickstep) at the conclusion of the 255-kilometre stage 11 from Assisi to Montecatini Terme.
Tomas Vaitkus (Orica-GreenEDGE) took third ahead of Team Sky's Mark Cavendish, whose fourth place was enough to take the points leader's red jersey off Matt Goss.
Katusha's Joaquim Rodriguez finished in the main bunch to retain the overall race lead.
A group of five riders went clear after 14 kilometres and built a gap of almost five minutes at one point.
But the main bunch, led by the efforts of Team Sky and in particular Jeremy Hunt, brought everyone back together heading into the finale.
Manuele Boaro (Saxo Bank) made a solo bid for glory on the last climb of the day but was quickly hauled in as the race entered the tight roads of Montecatini Terme.
The final bend, a tight right-hander, saw several riders go down but Ferrari emerged unscathed and had too much for Chicchi in the sprint to the line.