The Quick-Step Floors rider also took over the maglia rosa, nine seconds ahead of Lotto Soudal’s André Greipel, who began the day in pink.
“We’ve had the pink jersey with Rigoberto, Nairo and Esteban, but they’ve all been climbers or all-rounders,” said Gaviria.
“Getting a pink jersey on a stage like this gives us a broader perspective on the sport.”
Lukas Pöstlberger, winner of Friday’s opening stage, now sits third on the GC, 13 seconds back.
Gaviria won a wind-swept sprint out of a small group. Bora–Hansgrohe’s Rudiger Selig was second with Trek–Segafredo’s Giacomo Nizzolo in third.
“When I got to the Giro d’Italia I was worried that the other riders were much stronger than me,” said Gaviria.
“I had been training a lot before the Giro started and I thought I should have been doing better than that. But now my morale is much better.”
The wind played its expected role in the finale.
“We were aware the wind could play a huge role today and as soon as we took that corner and had the coast on our right side, the team rode full gas,” said Gaviria.
“From that point on, it was a team time trial until the finish, with the guys driving a hard tempo without ever looking back.”
Quick-Step Floors’ Bob Jungels was the one to break the field, with roughly 10km.
Eleven riders made the break and stayed away, with five of them holding together to contest the sprint in Cagliari.
The main peloton, with pink jersey Greipel in amongst the bunch, came across the line 13 seconds later.
BMC’s Rohan Dennis wasn’t as fortunate, losing over five minutes after a late crash.
“It goes without saying this is the best day of my career,” said Gaviria.
“To win a stage at the Giro and take the leader’s jersey is a dream come true. My teammates did a wonderful job today and I want to say a big thanks for how they rode, protecting me throughout the stage and then setting me up for this victory.”
Top ten results
|1.||Fernando Gaviria -|
|2.||Rudiger Selig - Bora–Hansgrohe||"|
|3.||Giacomo Nizzolo - |
|4.||Nathan Haas -Dimension Data||"|
|5.||Maximiliano Richeze -|
|6.||Kanstantsin Siutsou -|
|7.||Bob Jungels - Quick-Step Floors||"|
|8.||Caleb Ewan - Orica-Scott||+13"|
|9.||Sacha Modolo - Team UAE Emirates||"|
|10.||André Greipel - Lotto Soudal||"|
|1.||Fernando Gaviria -|
|2.||André Greipel - Lotto Soudal||+09"|
|3.||Lukas Pöstlberger - Bora-Hansgrohe||+13"|
|4.||Bob Jungels - Quick-Step Floors||"|
|5.||Kanstantsin Siutsou -Bahrain-Merida||"|
|6.||Caleb Ewan - Orica-Scott||+17"|
|7.||Roberto Ferrari - Team UAE Emirates||"|
|8.||Ryan Gibbons -|
|9.||Enrico Battaglin - Team LottoNl-Jumbo||"|
|10.||Sacha Modolo - Team UAE Emirates||"|