The Bahrain-Merida rider beat Team Sky’s Mikel Landa in a two-up sprint to finish in 6:24:22.
“Sadly I lost the stage in the last meters, but that’s cycling,” said Landa.
“It’s been a very fast stage. There was a breakaway in the first climb. I’ve been fighting and finally they caught me in the last climb.
“My goal was the GC, the mountains classification was not, but we’ll see. We’ll take it day by day.”
Movistar’s Nairo Quintana finished several seconds down in third.
Overall leader Team Sunweb’s Tom Dumoulin finished more than two minutes down keeping his lead by just a few seconds. He has an overall time of 70:14:48 with Quintana 31″ and Nibali 1’12” behind on the general classification.
“It was a spectacular stage,” said Nibali.
“There was climbing, descending, and then sprinting at the end there against Mikel.
“I didn’t think about being the first Italian to win a stage; what counted was having a strong team, making a big effort and staying up there.
“I’m closer now but Dumoulin has the advantage of the time trial in Milan.”
|1.||Vincenzo Nibali (Bahrain-Merida)||6:24:22|
|2.||Mikel Landa (Team Sky)||"|
|3.||Nairo Quintana (Movistar Team)||+12"|
|4.||Domenico Pozzovivo (AG2R La Mondiale)||+24"|
|5.||Ilnur Zakarin (Katusha-Alpecin)||+32"|
|6.||Davide Formolo (Cannondale-Drapac)||+1'26"|
|7.||Bauke Mollema (Trek-Segafredo)||+1'35"|
|8.||Bob Jungels (Quick-Step Floors)||"|
|9.||Adam Yates (Orica-Scott)||"|
|10.||Thibaut Pinot (FDJ)||"|
|1.||Tom Dumoulin (Team Sunweb)||70:14:48|
|2.||Nairo Quintana (Movistar Team)||+31"|
|3.||Vincenzo Nibali (Bahrain-Merida)||+1'12"|
|4.||Thibaut Pinot (FDJ)||+2'38"|
|5.||Ilnur Zakarin - Katusha-Alpecin||+2'40"|
|6.||Domenico Pozzovivo (AG2R La Mondiale)||+3'05"|
|7.||Bauke Mollema (Trek-Segafredo)||+3'49"|
|8.||Bob Jungels - Quick-Step Floors||+4'35"|
|9.||Steven Kruijswijk (Team LottoNl-Jumbo)||+6'20"|
|10.||Adam Yates (Orica-Scott)||+7"|
Full Stage 16 results