La prima grande occasione è per la Fiorentina: al 5’ colpo di testa di Caceres che supera Donnarumma ma Tomori salva sulla linea. Al 10’ Milan in vantaggio: lancio di Kjaer in verticale per Ibrahimovic che avanza e fulmina Dragowski, anche il Var conferma che Ibra è in posizione regolare. Al 18’ la Viola pareggia con una splendida punizione di Pulgar all’incrocio con Donnarumma che tocca il pallone quando è già entrato in porta.
Al 29’ incredibile traversa della Fiorentina con un pazzesco colpo di tacco al volo di Pezzella da calcio d’angolo. Al 30’ contatto tra Brahim Diaz e Ribery che chiede il rigore ma l’arbitro Guida non glielo concede. Al 35’ è pari anche il conto delle traverse: Ibra, ancora in posizione regolare, scavalca Dragowski con un pallonetto che va a stamparsi sul legno.
Al sesto minuto della ripresa la squadra di Prandelli si porta in vantaggio: assist di Vlahovic per Ribery che piazza un comodo sinistro alla destra di Donnarumma. Ma al 57’ pareggia Brahim Diaz che devia in rete da pochi passi alle spalle di Terracciano, che ha sostituito l’infortunato Dragowski, una sponda di schiena di Kjaer. Al 64’ incrocio dei pali colpito da Ibrahimovic su uno spiovente che voleva essere più un cross che un tiro.
Il Milan, che aveva iniziato passivamente il secondo tempo, ora assedia la Fiorentina, il gol del nuovo vantaggio è nell’aria e arriva al 72’: da Tomori a Kessie che serve Calhanoglu, chirurgico destro nell’angolino sul quale Terracciano non può nulla. La Viola reagisce ma non ha occasioni prima dell’87’, quando l’ex Bonaventura prova il sinistro a giro ma manda alto. Ma non c’è niente da fare, il Milan vince 3-2 riportandosi a -6 dall’Inter.