Nibali, który wygrywał włoski wyścig na identycznej trasie dwa lata temu, zaatakował na przedostatnim podjeździe na trasie – Civiglio – i dołączył do prowadzącego wtedy Thibaut Pinot (FDJ), by po chwili zostawić Francuza i samotnie pomknąć do mety. Utrzymując kilkanaście sekund przewagi nad pogonią pokonywał ostatnich 10 kilometrów pozostałych do mety w Como i mógł cieszyć się z drugiego w karierze zwycięstwa w Il Lombardia.
Włoski wyścig, kończący sezon najważniejszych wyścigów w Europie, nazywany też wyścigiem spadających liści, przyciągnął na start kilku kolarzy, którzy w ostatnich dniach i tygodniach dysponowali dobrą formą i chcieli zakończyć sezon dobrym wynikiem. Na starcie stanęli też m.in. Michał Kwiatkowski (Team Sky) i Rafał Majka (Bora-hansgrohe), jednak nie odgrywali znaczących ról w wyścigu. Początek na pofałdowanej trasie z Bergamo do Como, liczącej niemalże 250 kilometrów, należał tradycyjnie do uciekinierów. Po pierwszym ataku szóstki kolarzy, którzy zyskali ponad 10 minut przewagi, nad 60 kilometrów przed metą do kontrataku przeszli kolarze z peletonu – Mikael Cherel (Ag2R La Mondiale) wyszedł na prowadzenie, goniony przez Laurensa de Plusa (Quick-Step Floors). Kolarze pokonywali wtedy jeden z najsłynniejszych podjazdów wyścigu – Muro di Sormano (na 196km). Na szczycie Cherel miał 20 sekund przewagi nad De Plus i 50 nad peletonem, mocno już uszczuplonym, w którym wysoko jechali faworyci wyścigu.
Kręte zjazdy były bardzo niebezpieczne, o czym przekonał się De Plus. Belg wyleciał z jednego z zakrętów i spadł kilka metrów w dół poza barierki. Na szczęście jego obrażenia nie okazały się poważne. Cherel utrzymywał przewagę i na 35 kilometrów przed metą miał minutę zapasu nad peletonem, z którego wyskoczyli wtedy Aleksandro De Marchi (BMC Racing Team), Philippe Gilbert (Quick-Step Floors), a potem także Pello Bilbao (Astana). Ta trójka dołączyła do lidera na 28 kilometrów przed metą, a na kolejnym podjeździe – Civiglio (na 203km) – zostali złapani.
Faworyci zaczęli wtedy podkręcać tempo, grupa zasadnicza mocno się naciągnęła i w końcu zaatakował Pinot. Francuz zyskał kilkanaście metrów przewagi, ale tuż przez szczytem wzniesienia dołączył do niego Nibali. Włoch na zjeździe bez większych problemów zgubił rywala i już wtedy, na ponad 10 kilometrów do mety, wydawało się, że jedzie po zwycięstwo. Żaden z rywali nie był w stanie dogonić znikającego Włocha. Pinot był kilkanaście sekund dalej, a z peletonu wyskoczyli jeszcze m.in. Julian Alaphilippe (Quick-Step Floors), Rigoberto Uran (Cannondale-Drapac), ale bezskutecznie.
Nibali linię mety minął 28 sekund przed Alaphilippem i 38 przed Giannim Mosconem (Team Sky), który przyprowadził na metę kilkuosobową grupę.