O Milan chegou a ter 75% da posse de bola no primeiro tempo, mas não teve poder de finalização. A Lazio, por sua vez, teve a melhor chance do jogo com Matías Vecino, mas faltou categoria na hora de empurrar a bola para a meta.
Outro motivo para o placar sem gols na primeira etapa foi a boa participação dos goleiros. Tanto Provedel como Maignan foram firmes quando exigidos.
O Milan foi pressionar mais nos últimos minutos da etapa inicial, quando a marcação da Lazio ficou mais frouxa. Giroud, livre, dentro da área, errou a cabeçada e perdeu a chance de abrir o placar.
O segundo tempo foi mais nervoso. Aos 12 minutos, um lance polêmico. O time da Lazio pediu para que a partida fosse paralisada por causa de um choque entre Castellanos e Bennacer. Pellegrini parou no lance, viu Pulisic roubar-lhe a bola e cometeu a falta. O lateral-esquerdo da Lazio acabou expulso, resultando muita reclamação do time romano.
Quando a bola voltou a rolar, os times mantiveram a mesma força na marcação, mas foi o Milan que esteve mais perto da vitória, pois tinha um jogador a mais em campo. Aos 28, i suíço Okafor furou na pequena área. A Lazio respondeu, aos 30, com o artilheiro Immobile, que falhou na pequena área.
No ataque seguinte, aos 31, Rafael Leão marcou o gol e foi festejar com os torcedores do Milan, mas o VAR flagrou impedimento e o jogo permaneceu sem gols.
Quando parecia que o empate seria ruim para os dois times na classificação, o Milan conseguiu seu gol, aos 43 minutos. Okafor teve de chutar duas vezes para superar o esforçado goleiro Provedel.
Valente, a Lazio, que terminou o jogo com três expulsos, tentou buscar o empate, mas Immobile voltou a falhar na finalização.