The Irishman scored the biggest win of his career – the first in a Grand Tour – by beating Elia Viviani (Quick Step Floors) and Niccolo Bonifazio (Bahrain-Merida) after 159km of relatively flat racing on the Italian coast.
Sacha Modolo (EF Education First-Drapac) was fourth with Danny van Poppel fifth.
“I feel relieved. I have been close so many times before in the Giro,” said the Bora-Hansgrohe rider.
“To really get the timing right was key with so many fast sprinters here.
“You know, it is not easy to beat Viviani, he really knows what he is doing. But my time came.
“I just want to thank the whole team.”
Bennett said the key to his win was grabbing Viviani’s wheel and a bit of patience.
“I had to freewheel for a moment because I knew it was just a bit too early.
“When the time was right, I really took it on.”
A breakaway group of three – Markel Irizar Aranburu (Trek-Segafredo), Davide Ballerini (Androni Giocattoli-Sidermec) and Maxim Belkov (Katusha-Alpecin) – still enjoyed a lead of around two minutes with 25k to go, but their lead was quickly whittled down as the teams started organising themselves for the sprint.
Just before the bunch made contact with around 16km to go, Ballerini attacked one last time, but his solo break was short-lived as the race came together with more than 10km left.
Simon Yates (Mitchelton-Scott) retains the maglia rosa ahead of defending champion Tom Dumoulin (Sunweb) and Esteban Chaves (Mitchelton-Scott).