La cola del Diavolo siempre es la misma: Noah Okafor, el que marcó en Udine en el minuto 93, volvió a hacerlo. En el Estadio Olímpico se puso manos a la obra, “anticipándose” unos minutos con respecto a la última vez: en el minuto 88, el suizo dobló los guantes de Provedel y doblegó también al Lazio, dando al Milan un éxito que pesa, sobre todo después de las palabras de Gerry Cardinale ayer en Londres. Los rossoneri aseguraron la tercera plaza y se acercaron a la Juve, mientras que para Sarri en casa se hizo de noche. La victoria en casa faltaba desde el 14 de enero, y las tarjetas de penalti de Di Bello agotaron al equipo: los biancocelesti acabaron ocho contra once por las expulsiones de Pellegrini, Marusic y Guendouzi, estos dos últimos en la final.
En el 4-3-3 de los Biancocelesti, Vecino ganó la papeleta a Cataldi en el mediocampo, mientras que en la delantera fue Castellanos quien pasó al centro del tridente completado por Felipe Anderson y Zaccagni, con Immobile en el banquillo. Pioli vuelve a proponer el 4-1-4-1 visto contra el Atalanta, siendo Kjaer por Thiaw el único cambio con respecto al partido contra los nerazzurri: Bennacer sustituye a Luis Alberto, con la doble tarea de machacar al número 10 del Lazio e insertarse cuando se ensancha la malla contraria.
La cuestión es que apenas pasa nada en la primera parte, ni por un lado ni por otro: Lazio y Milan parecen preocupados ante todo por no destaparse demasiado. El resultado fue un primer tiempo escaso de ocasiones: el toque de Vecino en el minuto 8 acabó fuera por poco (el uruguayo llegó desde atrás para recoger el cabezazo de Anderson a la salida de un córner) y el remate de Pulisic en el minuto 46 (primer disparo a puerta del Milan, desviado a córner por Provedel, y cabezazo de Giroud a la salida de un córner desperdiciado) enmarcaron el primer tiempo. Entre medias, hubo contacto en el área entre Maignan y Castellanos, sobre el que el árbitro y el Var decidieron no intervenir, en medio de las protestas del Olimpico en ebullición.
El partido se vio sacudido por una tarjeta roja, que se materializó de forma casi surrealista: minuto 12 de la segunda parte, Castellanos cayó tras un choque con Bennacer, Pellegrini tenía el balón pero frenó en la línea de banda, probablemente para sacarlo, pero Pulisic se lo arrebató; el lateral biancocelesti, ya amonestado, empujó al estadounidense y Di Bello le amonestó por segunda vez. Los ánimos se caldearon en la banda, el estadio protestó, mientras Sarri y Pioli trataban de agitar la tarde con cambios. El entrenador biancoceleste introdujo a Hyasj e Immobile por Luis Alberto y Castellanos, el técnico rossonero hizo jugar a Calabria, Reijnders y luego a Okafor (Bennacer, Florenzi y Adli se quedaron fuera).
El Milan apretó y llegó al área con un disparo flojo de Giroud, un recorte de Reijnders que Okafor no llegó por poco y una volea de Loftus-Cheek repelida por Provedel. El Lazio sufrió, pero estuvo a punto de marcar por medio de Immobile, que recibió un servicio de Isaksen (que había entrado por Zaccagni), pero el delantero de los Azzurri desperdició un gol que estaba prácticamente cantado. El gol fue anotado un minuto después -con la colaboración de Gila- por Rafa Leao, que corrió bajo el córner rossonero, sumergido por sus compañeros, pero el sistema Var lo anuló: a pase de Reijnders, el portugués estaba en fuera de juego.
La carrera bajo la curva se repite a dos minutos del 90, pero esta vez todo es bueno: el que se quita es un chico con coletas como Rafa, pero que suele empezar en el banquillo, entra y soluciona problemas en la final. Tras el gol en Udine en el minuto 93, Noah Okafor repitió en el Stadio Olimpico: a centro de Leao (que se encendió en la última jugada del partido), Provedel repelió la primera volea del suizo, pero no pudo evitar el gol en el segundo intento. El final fue una parafernalia: entre los minutos 94 y 96 fueron expulsados Marusic y Guendouzi, y el pitido final fue muy tenso, con una trifulca entre rossoneri y biancocelesti.