Il Milan dice definitivamente addio alla lotta scudetto e complica la corsa ad un posto per la prossima Champions League, perdendo 3-0 in casa con l'Udinese. A decidere il match del 'Meazza' l'autogol di Bartesaghi al 27' e le reti di Ekkelenkamp al 37' e Atta al 71'. In classifica i rossoneri, al terzo ko nelle ultime quattro partite, restano fermi a quota 63 in terza posizione, con un vantaggio di 6 punti sulla Juventus quinta ma con una partita giocata in più. I friulani, trascinati da un ispirato Zaniolo, salgono al deciamo posto in classifica con 43 punti. Il primo tiro in porta è degli ospiti. Davis recupera palla al limite della sua area e fa ripartire il contropiede, con Zaniolo che porta palla nel corridoio centrale e poi dal limite cerca il sinistro: palla centrale bloccata da Maignan. Al 9' slalom in area di Pulisic, l'ex Chelsea parte dal lato sinistro dell'area si accentra passando in mezzo a tre avversari, al momento del tiro però viene chiuso dalla scivolata di Solet. Al 12' Davis a centrocampo sbaglia l'appoggio all'indietro, Saelemaekers recupera, alza la testa e verticalizza per Leao che detta il passaggio in profondità. Il portoghese scarica immediatamente il destro, potente ma alto. Al 16' Leao cerca ancora la profondità con i tempi giusti, attaccando lo spazio sul passaggio in verticale. Kabasele lo segue, i due si agganciano e Leao cerca di liberarsi con una sbracciata, punita da Marchetti. L'ex Lille reagisce protestando e con un applauso ironico all'arbitro che gli vale il giallo. Al 27' i friulani sbloccano la partita. Zaniolo scappa via centralmente, si ferma, sterza e serve a destra Atta, sul suo pallone messo al centro c'è la netta deviazione di Bartesaghi che batte Maignan.
Al 32' chance per l'immediata replica. Pulisic da sinistra scodella al centro col destro un pallone morbido. Leao davanti alla porta prova ad andarci in spaccata anziché di testa, ma anticipa Saelemaekers che sarebbe arrivato comodamente sul secondo palo per la deviazione. Il belga per la stizza calcia via una bottiglietta d'acqua. Un minuto dopo ancora il Milan vicino al pari. Stavolta Pulisic si mette in proprio, gran destro potente ma palla a lato di poco. Al 36' Davis sfonda a sinistra saltando Pavlovic e poi scarica una gran botta mancina verso la porta. Deviazione di Maignan e palla che si alza colpendo la traversa. Un minuto dopo e i friulano raddoppiano. Pennellata di Zaniolo che da destra crossa col mancino verso il centro, Ekkelenkamp salta più di De Winter e mette in rete. Nel recupero della prima frazione friulani vicini al tris. Leao perde palla e l'Udinese riparte in contropiede, palla messa in mezzo per Davis, che davanti alla porta è anticipato da Pavlovic con un intervento disperato. La palla finisce però sul piede di Kristensen, che ha seguito l'azione e calcia a botta sicura, colpendo però in pieno Davis e vanificando la ghiotta occasione. Nell'intervallo Allegri toglie Athekame e inserisce Fullkrug. La ripresa si apre con il giallo a Kristensen per una trattenuta su Rabiot che gli era andato via. Al 5' Modric prova il destro dalla lunga distanza, Okoye si allunga alla sua destra e devia in corner. Sugli sviluppi del corner la palla finisce al limite dell'area sul destro di Saelemaekers che calcia forte in porta. Okoye va ancora alla sua destra e con la mano aperta riesce in una deviazione super, con palla che poi schizza sulla traversa.
Al 12' Leao a sinistra si invola e arriva sul fondo, poi crossa in mezzo per Fullkrug, colpo di testa alto sopra la traversa. Al quarto d'ora secondo cambio per Allegri con Fofana per Ricci. Al 21' termina la partita di Zaniolo, al suo posto Piotrowski. Passa un minuti e ci prova Fofana con una girata sporca in area, Okoye attento. Al 26' l'Udinese cala il tris: gran tiro di Atta dopo essere entrato in area e Maignan ancora battuto. Al 28' entrano Nkunku e Jashari, al posto di Pulisic e Modric. Subito dopo Maignan evita il poker salvando su un sinistro di Davis. Poco dopo lo stesso centravanti dell'Udinese è costretto a uscire per un infortunio muscolare, al suo posto Gueye. Al 33' l'ultimo cambio di Allegri che inserisce Loftus-Cheek al posto di Leao, fischiato dal pubblico di San Siro. Al 38' va al tiro il neo entrato Gueye, conclusione sull'estero della rete. Al 40' Runjaic termina le sostituzioni inserendo Zarraga per Atta e Miller per Ekkelenkamp. La partita non ha più nulla da dire nei minuti finali e scorre senza altre emozioni fino al triplice fischio di Marchetti.