La Fiorentina affronta un Milan incerottato a caccia di punti pesanti per la corsa salvezza. I viola partono bene e già al 4′ sfiorano il vantaggio: ci vuole un salvataggio di Tomori quasi sulla linea per sventare il colpo di testa di Milenkovic. Si intuisce subito che sarà un match combattuto: dopo 8 minuti è però il Milan a passare in vantaggio. L’azione si sviluppa da Kjaer verso Ibrahimovic, con lo svedese che è tenuto in gioco da Quarta e di sinistro batte Dragowski. La viola non ci sta e reagisce: al 18′ ecco il pareggio con una gran punizione di Pulgar, che dalla sinistra pesca l’angolo su cui Donnarumma non arriva. 1-1. La gara non diminuisce di intensità e Fiorentina e Milan si pungono ancora. Tocca a Pezzella sfiorare la rete da antologia sotto gli occhi di Mancini: tacco pregevole su un pallone spiovente dalla sinistra e traversa piena a portiere battuto (29′). Dalla parte opposta pareggia il conto dei legni Ibrahimovic, che trova ancora il legno (34′).
La ripresa inizia con la stessa frizzantezza della prima frazione. Ci pensa subito la Fiorentina ad accendersi e dopo 5′ è già in vantaggio con Ribery. Il francese capitalizza al meglio un’azione avvolgente dalla destra e fa secco Donnarumma con un piattone su appoggio di Vlahovic. Il vantaggio è però troppo effimero: bastano altri 6 giri d’orologio al Milan per pareggiare, con Kjaer che prolunga di testa un pallone buono per Brahim Diaz: è 2-2. I rossoneri escono del tutto galvanizzati dal nuovo pareggio e premono forte: al 64′ una gran giocata di Ibra sfiora il palo, tre minuti più tardi Theo Hernandez mette fuori di poco. Sono le prove generali del gol, che arriva inesorabile al 72′: Tomori lancia Kessie in profondità, con l’ivoriano che serve Calhanoglu e il turco che pesca l’angolo lontano. 2-3. Finisce così, con i viola fermi a 29 e raggiunti dalla coppia Spezia-Benevento e il Milan che mette in cascina altri tre punti fondamentali per la classifica.