Il momento decisivo della più antica classica del mondo è a 2.5 km dall'arrivo: Rigoberto Uran si stacca dal gruppo comprendente anche Fabio Aru, Bernal, Gaudu, Molard e Cherel. Il colombiano piazza l'allungo decisivo e, ad 1 km dal traguardo, riesce ad ottenere un vantaggio sul gruppetto degli inseguitori. Da questo, prova a staccarsi Adam Yates, che si lancia all'inseguimento nel tentativo di avvicinarsi alla testa della corsa.
Sul gradino più alto del podio, però, ci va la Cannondale-Drapac di Rigoberto Uran, che taglia il traguardo in 4h24'51''. Inutile la disperata rimonta dell'inglese del team Orica-Scott, che deve accontentarsi del secondo posto con 10'' di distacco. A 20'', invece, Fabio Aru, che completa il podio davanti a Nairo Quintana. Ottavo Thibaut Pinot a 35''. Con questo successo, Uran si aggiudica la sua prima Milano-Torino, trovando il successo dopo il terzo posto dello scorso anno. Proprio nel 2016, la corsa è stata vinta da un altro colombiano, Miguel Angel Lopez dell'Astana.