Nibali, qui était favori au départ des 247 kilomètres, a devancé d'une trentaine de secondes le Français Julian Alaphilippe.
L'Italien Gianni Moscon a réglé un petit groupe pour la troisième place.
En franchissant la ligne, Nibali (32 ans) a dessiné avec ses doigts le nombre de 50, son total de victoires.
Impérial dans le Civiglio
Pour gagner, le "Requin de Messine" a fait l'effort derrière le Français Thibaut Pinot dans le Civiglio, l'avant-dernière difficulté du parcours, qu'un quatuor d'échappés (Gilbert, De Marchi, Bilbao, Chérel) avait abordé avec une courte avance.
Pinot a attaqué à trois reprises dans cette montée mais a vu revenir près du sommet Nibali, qui a pris ses distances dans la descente. L'Italien a creusé ensuite l'écart dans l'ultime montée (San Fermo della Battaglia) pour basculer au sommet, à 5400 mètres de l'arrivée, avec une quarantaine de secondes d'avance.
Nibali a déjà gagné le Tour, le Giro et la Vuelta dans sa carrière. Cette année, il est monté sur le podium du Giro (3e) et de la Vuelta (2e).
A une quarantaine de kilomètres de l'arrivée, le Belge Laurens De Plus a fait une cabriole spectaculaire au-delà du parapet mais sans conséquence dramatique.
agences/bond
Tour de Lombardie, Bergamo - Como (248 km)
1. Vincenzo Nibali ITA 6h15'25"
2. Julian Alaphilippe FRA + 28"
3. Gianni Moscon ITA 38"
4. Thibaut Pinot FRA 38"
5. Domenico Pozzovivo ITA 38"
6. Fabio Aru ITA 38"
7. Mikel Nieve ESP 40"
8. Nairo Quintana COL 42"
9. Sergey Chernetsky RUS 47"
10. Sam Oomen NED 47"