Sono Psg e Porto le ultime squadre a volare agli ottavi di finale di Champions League. Ai parigini basta l'1-1 in casa del Dortmund firmato da Adeyemi e Zaire-Emery, mentre i lusitani vincono 5-3 lo spareggio con lo Shakhtar. City a punteggio pieno grazie al 3-2 alla Stella Rossa, mentre il Barcellona è primo nonostante il ko per 3-2 in casa dell'Anversa. Nel girone della Lazio, il Celtic batte 2-1 il Feyenoord. Lipsia-Young Boys finisce 2-1.
GRUPPO G
Ultimi 90 minuti ininfluenti nel gruppo G: il Manchester City, già sicuro del primo posto, si impone 3-2 in casa della Stella Rossa. A Belgrado, Guardiola fa ampio turnover, con solo Akanji, Stones e Grealish in campo tra i titolarissimi dei campioni d'Europa. Tra i debuttanti in assoluto c'è Micah Hamilton, classe 2003, che porta in vantaggio gli ospiti con un potente destro sul secondo palo al 19'. Al 62', invece, tocca ad un altro giovane: Bobb, che trova il raddoppio con una splendida azione personale chiusa con un preciso mancino sul secondo palo. Al 76', i padroni di casa tornano in partita grazie alla rete di Hwang, ma è tutto inutile: nove minuti dopo, infatti, Hamilton si guadagna su Djiga il calcio di rigore trasformato da Phillips. Katai entra e ad inizio recupero sembra riaprire i giochi, ma finisce 3-2: City a punteggio pieno come solo il Real Madrid ha saputo fare in questa fase ai gironi.
Nell'altro match, il Lipsia supera 2-1 lo Young Boys. I tedeschi passano a inizio ripresa, al 51', quando Sesko si gira in area su Janko e di sinistro mette in porta. L'1-0 dura però appena due minuti, poi gli elvetici pareggiano con la ripartenza rifinita da Nsame e finalizzata da Colley. Ma il festival dei gol ravvicinati prosegue e, infatti, poco dopo arriva il 2-1 in favore dei tedeschi con il preciso diagonale mancino di Forsberg (56').
GRUPPO E
Pur senza alcun valore di classifica, l'altra sfida del girone della Lazio regala spettacolo: alla fine, la spunta il Celtic che batte 2-1 il Feyenoord. Gli scozzesi passano in vantaggio al 33' grazie al rigore di Palma, ma all'82' Minteh sembra regalare il pareggio agli olandesi. McGregor colpisce una traversa poco dopo ma, al 91', Lagerbielke fa gioire i padroni di casa. Il Celtic saluta le competizioni europee con una gioia, mentre gli uomini di Slot parteciperanno all'Europa League.
GRUPPO F
Alla fine, Psg e Dortmund scelgono il male minore vista la vittoria del Milan col Newcastle e pareggiano 1-1: tedeschi primi, francesi secondi. Il match in Germania è subito ricco di emozioni: la prima parata è di Donnarumma, poi però viene fuori la squadra ospite. Süle salva sulla linea la conclusione di Mbappé, poi è Barcola, con un destro a giro, a colpire il palo e a portare i francesi a centimetri dal vantaggio. La situazione non cambia neanche al 24', con Kolo Muani che tocca delicatamente con l'esterno ma sfiora lo specchio della porta. Il primo tempo finisce senza gol ma con i francesi che chiedono un rigore e Hummels che perdona da pochi passi.
Nel secondo tempo, i tedeschi si portano in vantaggio grazie ad Adeyemi. L'1-0 dura però solo 5 minuti, perché Zaire-Emery conclude a fil di palo e pareggia ridando una possibilità alla formazione di Luis Enrique. Mbappé col sinistro prova a completare la rimonta per i parigini, ma la sfera finisce a lato, poi l'ex Monaco segna ma in fuorigioco. Poi segna il Milan e la situazione cambia: il Psg avrebbe potuto vincere e chiudere primo, ma un gol dei tedeschi lo avrebbe eliminato. I ritmi rallentano e l'1-1 è inevitabile: rossoneri eliminati, mentre i campioni di Francia passano come secondi.
GRUPPO H
Il Porto si prende il secondo posto del gruppo H vincendo 5-3 lo spareggio in casa con lo Shakhtar. La sfida del Dragao si sblocca al 10' con il gol di Galeno su assist di Evanilson. Al 29' arriva il pareggio di Sikan su assist di Zubkov, che inizialmente viene valutato in fuorigioco dall'assistente. Alla fine la rete viene concessa, ma i portoghesi si lamentano in quanto si erano fermati dopo che il guardalinee aveva alzato la bandierina. Proteste inutili: è 1-1. Al 43', però, il Porto è di nuovo davanti e grazie ancora a Galeno, che con un destro sul primo palo fa 2-1, trovando la seconda doppietta dopo quella dell'andata. A chiudere i giochi, al 62', è invece Taremi, che di sinistro fa 3-1. Gli ucraini accorciano le distanze con l'autogol di Eustaquio al 72', ma tre minuti dopo Pepe segna su corner e fa 4-2. C'è tempo anche per il pokerissimo: lo segna all'82' il figlio di Sergio Conceiçao, Francisco. Inutile, poi, il definitivo 5-3 di Eguinaldo.
Confermato dunque, nonostante il ko, il primo posto del Barcellona, che perde 3-2 in casa dell'Anversa. Match che cambia volto già dopo due minuti: i belgi passano in vantaggio dopo poco più di un minuto con Vermeeren, che sfrutta l'errore in costruzione di Romeu e insacca. Al 35', però, Ferran Torres pareggia con un grande inserimento su assist di Yamal. Nella ripresa, viene annullato il possibile 2-1 per i padroni di casa, ma la rete è solo rinviata, poi Janssen di sinistro non sbaglia. Recupero folle: Guiu segna il 2-2 al 91', ma sull'azione successiva Ilenikhena realizza il definitivo 3-2, regalando all'Anversa la prima, storica vittoria in Champions League. Catalani primi grazie al vantaggio negli scontri diretti con il Porto.