The Farnese Vini-Selle Italia rider attacked on a 12% ascent inside the final four kilometres.
Vincenzo Nibali (Liquigas-Cannondale) stayed with Gatto but was beaten in the sprint but the Sicilian had the consolation of moving into the overall lead.
He carries a 12 second lead over Riccardo Chiarini (Androni-Venezuela) going into Thursday’s stage to the Passo della Bocchetta.
Gatto is third on GC, a further two seconds back, with overnight leader Sonny Colbrelli (Colnago-CSF) dropping to fourth.

