La Roma va sotto tre volte e rimonta tre volte, lotta fino in fondo, concede un po' troppo in difesa, soprattutto sui calci d'angolo, ma alla fine esce con un punto importante segnando due gol su calcio d'angolo, contro la squadra indubbiamente più in forma del campionato e, non per niente, capolista solitaria della serie A dopo la quinta giornata d'andata.

È stata una partita strana, piena di episodi che sembravano dar la svolta in un senso e poi nell'altro, col Milan subito in vantaggio con Ibrahimovic e subito ripresa da Dzeko su corner, ma alla fine in equilibrio, quasi rovinata dalle curiose interpretazioni arbitrali dello stordito arbitro Giacomelli che alla fine ha scontentato tutti, dando prima il rigore assai dubbio alla Roma del 2-2 (sul campo era sembrato rigore, e l'arbitro se ne è convinto senza andare a rivedere il dettaglio che avrebbe scagionato Bennacer) di Veretout e poi, per compensazione, regalandone uno assurdo al Milan, del 3-2, per la doppietta di Ibra: ma ancora su calcio d'angolo è arrivato il gol finale di Kumbulla (alla seconda rete decisiva), per il 3-3 definitivo. A riportare sopra il Milan a inizio ripresa aveva pensato Saelemaekers, sfruttando il secondo assist di Leao, uno dei migliori in campo.

Movimentata la partita e movimentata la vigilia per via delle nuove positività emerse nel ritiro dei milanisti, con ben cinque elementi contagiati dal Covid: i due calciatori Donnarumma e Hauge e tre uomini dello staff. Pioli ha così rilanciato il portiere romeno Ciprian Tatarusanu, che non giocava una partita dal 2 febbraio scorso: e la ruggine s'è vista tutta in occasione del pareggio di Dzeko dopo un quarto d'ora. Per il resto le formazioni scese in campo sono state più o meno quelle annunciate, con la linea a quattro di Pioli con i soliti Calabria, Kjaer (nettamente il miglior difensore del comparto), Romagnoli e Theo Hernandez, Kessie e Bennacer a centrocampo, e quattro giocatori più offensivi, a destra e a sinistra i giovani talenti ventunenni Saelemakers e Leao, nel mezzo i più esperti Calhanoglu (recuperato proprio alla vigilia della sfida) e Ibrahimovic. Giovani talenti in difesa, invece, per Fonseca, con i tre difensori Ibanez, Mancini e Kumbulla (messi in quest'ordine per permettere ai due più esterni di chiudere meglio la profondità dei dirimpettai), e sulle fasce Karsdorp (preferito a Santon) e Spinazzola, con Pellegrini e Veretout in mezzo e davanti tutta l'esperienza di Pedro (l'unico sempre presente dal primo minuto), Mkhitaryan e Dzeko. In fase di non possesso, peraltro, la Roma si distendeva in un ordinato 442, con l'esterno di difesa opposto alla palla a chiudere a 4 la difesa, e uno dei due trequartisti ad aprirsi per formare una bella linea compatta anche a metà campo, lasciando l'altro trequartista al fianco di Dzeko a pressare sull'impostazione dei due centrali avversari.

Una bella partita a scacchi, con l'equilibrio rotto dai due fuoriclasse dell'attacco. Ibra ha segnato a freddo, dopo neanche 120 secondi, grazie soprattutto alla bella intuizione del suo epigono portoghese che per l'età potrebbe essere il figlio: alla prima discesa Rafa Leao ha tagliato il campo verso l'interno, scucchiaiando all'improvviso dentro l'area e cogliendo così impreparato Kumbulla, chiamato a seguire lo svedese nel taglio ma staccandosi troppo però da lui: così Mirante ha provato a metterci una pezza, ma a Ibrahimvic è bastato allungare il piedone numero 47 per toccare il pallone e poi aspettare che entrasse nella rete ormai sguarnita. La Roma non s'è però disunita, sferzata dall'estro di Pellegrini e Pedro, con Veretout e Mkhitaryan leggermente più timidi, ma poi cresciuti col tempo. Così i giallorossi, per la prima volta da tre anni scesi in campo con l'insolita combinazione cromatica con la maglia bianca e pantaloncini e calzettoni rossi (l'ultima volta che la utilizzarono vinsero proprio a San Siro il 1° ottobre 2017), si sono piazzati nella metà campo avversaria e hanno più volte spaventato Tatarusanu: in particolare con Dzeko, fermato da Kjaer al 9', poi con Pellegrini a servire Mkhitaryan (lento a concludere al 13'). Ma sul corner, al 14', una bella parabola di Pellegrini è stata letta male dal sostituto di Donnarumma e benissimo da Dzeko che ha schiacciato in rete anticipando Romagnoli e approfittando del clamoroso liscio del portiere. Al 19' Karsdorp ha avuto la palla per il vantaggio, ma l'ha sprecata con un controllo imperfetto, poi il Milan si è ripreso e la Roma si è quasi impaurita. E il canovaccio è cambiato: così sono arrivate le occasioni del Milan che hanno esaltato Mirante, al 22' su una discesa di Saelemaekers, al 29' sul colpo di testa di Romagnoli sul corner successivo a una gran conclusione di Hernandez deviata di piede e nel finale su una bellissima punizione di Calhanoglu. Al 30', sull'ennesimo corner lasciato alle incornate avversarie, è stato il palo a salvare Mirante, sulla precisa deviazione di testa di Kjaer. In tutto questo periodo di supremazia dei padroni di casa, la Roma ha messo il naso fuori dall'area solo una volta, con una percussione di Ibanez, respinta da Tatarusanu, con successiva occasione di Pellegrini su errore in uscita di Leao, con il portiere romeno stavolta bravo ad opporsi.

La ripresa è stata ancora più pirotecnica ed è cominciata per la Roma male esattamente come il primo tempo: ancora un po' molli nei contrasti, i giallorossi hanno lasciato che Leao controllasse un pallone praticamente a metà campo e partisse sulla fascia puntando Karsdorp senza che nessuno dei centrocampisti seguisse l'onda. Così sull'ennesimo strappo del portoghese a superare in corsa l'avversario, e sulla successiva palla a rimorchio, Saelemaekers si è ritrovato sul piede il gol del vantaggio, mentre Veretout è rimasto indietro. Con la strada nuovamente in salita la Roma si è alzata sui pedali e ha ricominciato a palleggiare con i tempi e i ritmi delle serate migliori. Al 4' Mkhitaryan si è girato male in area dopo un servizio di Dzeko e all'8' ha restituito il favore all'amico tagliando da sinistra un cross delizioso che il bosniaco ha impattato perfettamente col piattone aperto, mandando però la palla di poco sopra la traversa. In qualche ripartenza i difensori romanisti hanno dovuto fare gli straordinari, ma non hanno mai smesso di appoggiare anche ogni manovra offensiva. Dentro al 21' Peres per Karsdorp (ancora insufficiente), al 23' è stato Mancini a incornare un angolo fuori di poco e, un minuto dopo, sull'ennesima percussione Pedro sembrava in anticipo a recuperare un pallone in area (su tiro ancora dell'armeno) ma Bennacer è intervenuto allargando il piede a copertura del pallone: a velocità naturale poteva sembrare rigore, e infatti Giacomelli l'ha concesso, ma mentre i replay televisivi consentivano ai telespettatori di verificare l'esatta dinamica (Bennacer è stato furbo, ma il fallo l'ha commesso Pedro), l'arbitro è rimasto fermo sulla sua decisione e ha consentito a Veretout di firmare il 2-2. Investito dalle rumorose proteste dei rossoneri, mentre Pioli rinforzava l'attacco inserendo Castillejo e Krunic per i due attaccanti esterni, l'arbitro triestino ci ha messo otto minuti per compensare l'errore, regalando a Ibra il penalty del 3-2 sanzionando in maniera ridicola un presunto contatto di Mancini su Calhanoglu. La partita si innervosiva, Giacomelli limitava le proteste a suon di cartellini, ma la Roma non si scomponeva. E al 37', ancora su corner stavolta di Veretout (Pellegrini era uscito per Crstante), Ibra stavolta lisciava il rinvio e Kumbulla faceva 3-3. E ancora su corner, nel convulso finale, prima Kessie (gran parata di Mirante) e poi Romagnoli (fuori) rischiavano di segnare altri gol. Ma sarebbe stato troppo.