Manchester United, Paris and Roma led the way into the last 16 as group winners with Basel and Juventus also booking their places in the knockout stages.
Manchester United 2-1 CSKA Moskva
Benfica 0-2 Basel
A header in either half, from Mohamed Elyounoussi and Dimitri Oberlin, took the Swiss side into the knockout stage as Group A runners-up and made it six defeats out of six for Benfica.
Bayern München 3-1 Paris Saint-Germain
First-half goals by Robert Lewandowski and Corentin Tolisso had Bayern dreaming of a winning margin to eclipse their 3-0 loss in France on matchday two and snatch Group B’s top spot from the visitors. Those hopes were effectively dashed by Kylian Mbappé’s second-half header, although Tolisso’s second ensured Bayern ended the section on a high.
Celtic 0-1 Anderlecht
A deserved win for Anderlecht, even if there was a hint of fortune about the Jozo Šimunović own goal. Les Mauves showed more enterprise, but ultimately were unable to match Celtic’s margin of victory from matchday two in Brussels so the hosts took third position and a UEFA Europa League berth.
Roma 1-0 Qarabağ
The Giallorossi were made to work for their win but secured the three points that enabled them both to qualify and to finish first in Group C. Diego Perrotti nodded the only goal eight minutes into the second half.
Chelsea 1-1 Atlético Madrid
Frustration for both teams as Roma’s result meant Chelsea lost out on top spot in Group C and Atlético were consigned to third. Saúl Ñíguez’s header put the visitors in front but, in an entertaining second half, Chelsea pressure told as Stefan Savić’s own goal earned the hosts a point, sending Atleti into the UEFA Europa League.
Olympiacos 0-2 Juventus
Last season’s runners-up claimed the section’s runners-up slot via victory in Greece, achieved thanks to Juan Cuadrado’s early goal and a 90th-minute strike by substitute Federico Bernardeschi.
Barcelona 2-0 Sporting CP
Already assured of first place, Barcelona rounded off Group D with victory at the Camp Nou. After Paco Alcácer’s header gave Barça the lead just before the hour, an added-time own goal from Blaugrana old boy Jérémy Mathieu wrapped up the points.
Group E: Liverpool v Spartak Moskva, Maribor v Sevilla
Group F: Shakhtar Donetsk v Manchester City, Feyenoord v Napoli
Group G: RB Leipzig v Beşiktaş, Porto v Monaco
Group H: Tottenham Hotspur v APOEL, Real Madrid v Borussia Dortmund