The Ineos-Grenadiers rider, who claimed the time trial title at the world championships last week, clocked 15 minutes and 24 seconds to beat Portugal's Joao Almeida by a massive 22 seconds.
"Today, I knew I was one of the hot favourites but I tried to stay calm," Ganna said.
"We did it, what a great result and what a thrill to wear the Maglia Rosa on my first Giro, which is a good omen for the rest of the race."
Briton Thomas, also from Ineos-Grenadiers, was the best of the pre-race favourites when he took fourth place in 15:47, with his compatriot Simon Yates losing 26 seconds to the 2018 Tour de France champion.
"It was windy but I think I was comfortable on the bike. Maybe I was just a little too aggressive at the start and in the last two kilometres I lost the legs a little bit," Thomas said.
"Maybe just a little too much in the first half but we can still be pretty happy."
Two-time champion and home favourite Vincenzo Nibali had a disappointing ride, finishing 1:06 behind Thomas, with Dane Jakob Fuglsang and Dutchman Steven Kruijswijk also losing precious time - down 1:24 and 1:21 on the leader, respectively.
Fuglsang's Astana teammate and co-leader Aleksandr Vlasov of Russia lost 57 seconds to Thomas.
Astana, however, lost key climber Miguel Angel Lopez, sixth overall in the Tour de France, who was taken into an ambulance after crashing heavily when he hit a bump on the road.
"Miguel Angel has been taken to hospital for further observation," Astana said on Twitter.
The Giro was rescheduled from its original May 9-31 dates with the start being moved from Hungary to Sicily amid the COVID-19 crisis.