Nibali, som säkrat segern i girot före dagens etapp, gick ikapp då ledande Eros Capecchi i den tuffa stigningen med sex kilometer kvar till mål. Tre kilometer senare var italienaren i ensam ledning och kunde hålla i det tuffa tempot trots den tuffa lutningen, som högts 18 grader. I mål var han ohotad och kunde utmattad glida först över mållinjen.
Colombianen Rigoberto Uran gick om Cadel Evans, Australien, i sammandraget efter att ha slutat 3:a i dagens etapp. Han är 4.43 minuter efter Nibali medan Evans är 5.52 efter.
Landsmannen Fabio Duarte blev etapptvåa.
Tävlingen avslutas på söndag i Brescia med en etapp om 197 kilometer platt åkning.