L'Italien a devancé l'Autrichien Patrick Konrad et le Portugais Joao Almeida (Deceuninck-Quick Step) qui conserve le maillot rose de leader. Harm Vanhoucke (Lotto Soudal) termine 7e et meilleur Belge.

Après plusieurs tentatives d'échappée avortées, huit coureurs s'isolaient en tête de la course: Filippo Ganna et Salvatore Puccio (Ineos Grenadiers), Jan Tratnik (Bahrain-McLaren), Carl Fredrik Hagen (Lotto Soudal), Jhonatan Restrepo (Androni Giocattoli-Sidermec), Hector Carretero (Movistar Team), Valerio Conti (UAE Team Emirates) et Edoardo Zardini (Vini Zabù-Brado-KTM).

À 55 kilomètres de l'arrivée, le peloton accélérait le tempo et l'échappée ne comptait plus que 3 minutes d'avance au pied du Valico di Montescuro, dernière ascension du jour. Moment choisi par Thomas De Gendt (Lotto Soudal) pour partir en contre avec le Colombien Einer Rubio (Movistar).

À 20 kilomètres de l'arrivée, De Gendt et Rubio revenaient sur Ganna, Carretero et Zardini en tête de la course avant de lâcher Carretero et Zardini quelques mètres plus loin. Ganna profitait d'une mésentente entre De Gendt et Rubio pour partir seul à 17 kilomètres de la ligne d'arrivée.

Derrière, De Gendt et Rubio étaient repris à 12 kilomètres de l'arrivée par le peloton. Dans la descente vers Camigliatello Silano, le champion du monde du contre-la-montre résistait au retour du peloton pour décrocher son deuxième succès sur le Giro après avoir remporté le contre-la-montre de la première étape.

Au classement général, Joao Almeida, troisième de l'étape, conserve le maillot rose de leader. Jeudi, la sixième étape mènera le peloton entre Castrovillari et Matera (188 km).