The line-up for the UEFA Champions League Round of 16 draw was completed after AC Milan and RB Leipzig sealed their places, while Benfica scored five goals in a frantic last half-hour to grab the top spot in Group H ahead of Paris St Germain.
A round-up of Wednesday's action.
French forward Olivier Giroud scored two goals and created another as AC Milan crushed Salzburg 4-0 on Wednesday to reach the Champions League knock-out stages for the first time since 2013-14.
Needing to avoid defeat in their final Group E match to reach the last 16 against an Austrian side gunning for the win that would take them through, Giroud settled any nerves around the San Siro with an early header into the bottom corner.
The veteran expertly headed across for Rade Krunic to make it two 43 seconds into the second half and Giroud put the game to bed in the 57th minute, drilling home after fine work from Rafael Leao.
A solo goal from Junior Messias in stoppage time capped an excellent night for Milan, who secured second spot in Group E behind England's Chelsea.
Salzburg will go into the Europa League after finishing third.
Coach Stefano Pioli, who signed a new three-year contract this week, guided Milan to their first Serie A title in 11 years last term, but saw his side finish bottom of their group on their return to the Champions League.
Back-to-back defeats to Chelsea this time around left the seven-time European Cup winners with plenty to do to avoid another early exit, before a crucial victory at Dinamo Zagreb last week ensured their fate remained in their hands going into the final group match.
Right from the off in their famous San Siro stadium, Milan never looked in danger of missing out again as, moments after Theo Hernandez had rattled the post, Giroud headed home Sandro Tonali's corner.
Salzburg remained a threat in the first half but Krunic's first-ever Champions League goal ended any hopes of a comeback.
With Giroud screaming for it in the middle as he hunted for his hat-trick, Messias stroked the ball into the bottom corner, but the night still belonged to the Frenchman.
Aged 36 years and 33 days, Giroud became the oldest player to score a brace in the Champions League for Milan since Filippo Inzaghi against Real Madrid in November 2010.
Real Madrid thump Celtic to top group
Real Madrid crushed Celtic 5-1 to finish top of Champions League Group F as they bounced back from their first loss of the season against RB Leipzig last week.
Goals from Luka Modric, Rodrygo, Marco Asensio, Vinicius Jr. and Federico Valverde - the first two from the penalty spot - ensured the holders topped their group with 13 points, one ahead of Leipzig with both teams reaching the round of 16.
Celtic finished bottom with two points.
With Ballon D'Or winner Karim Benzema missing the game due to a muscle injury, it was a night of redemption for Asensio, who inspired waves of Real Madrid attacks in the first half.
Modric and Rodrygo scored early goals from the spot following handballs by Celtic defenders and Asensio played a big part in the build-ups.
Five minutes into the match he found Rodrygo with a beautiful touch and the Brazilian's angled shot thundered off the post.
Valverde's strike from the rebound was deflected off the hand of a defender and Modric dispatched the spot-kick after sending the goalkeeper the wrong way.
Real were awarded another penalty after 18 minutes and following a VAR check Rodrygo provided another calm finish.
Asensio extended Real's lead six minutes after the break with a nice volley from a Dani Carvajal cross and 10 minutes later Valverde made a great run down the right and crossed for Vinicius to score with a close-range shot.
Valverde added the fifth with what is becoming his trademark, an unstoppable long-range strike into the top corner.
It was Valverde's fifth goal from outside the box this season in all competitions, more than any other player from Europe's big five leagues.
Jota scored a consolation goal for Celtic, slotting a free-kick into the top right corner five minutes from time.
Leipzig cruise past Shakhtar to go through
Christopher Nkunku scored one goal and set up another as RB Leipzig crushed Shakhtar Donetsk 4-0 to qualify for the Champions League last 16, while the Ukrainians dropped down to the Europa League.
Leipzig, who only needed a point to advance to the knock-out stage, took the lead in the 10th minute when Timo Werner's shot was saved by Shakhtar goalkeeper Anatoliy Trubin but Nkunku was on hand to slot home the rebound.
Five minutes into the second half, Mohamed Simakan headed the ball back into the box after David Raum's cross and it fell to Andre Silva, who doubled the visitors' advantage by prodding the ball home at the near post from a tight angle.
Nkunku kept his composure to set up Dominik Szoboszlai on the right with an audacious flick just after the hour mark, and the Hungarian winger rounded goalkeeper Trubin before firing into the unguarded net.
Substitute Dani Olmo, who replaced Szoboszlai, piled more misery on Shakhtar moments after coming on, taking a free kick short to Kevin Kampl before cutting back inside and whipping a shot into the far corner in the 68th minute, with his effort deflecting in off Shakhtar's Valerii Bondar.
Leipzig finished second in Group F on 12 points, six ahead of Shakhtar in third. Holders Real Madrid retained top spot with 13 points after their 5-1 home win over bottom side Celtic.
Teenager Lewis grabs spotlight as Manchester City beat Sevilla
Manchester City teenager Rico Lewis marked his first senior start with his maiden goal for the club to spark a comeback in a 3-1 defeat of Sevilla to complete their unbeaten Champions League group campaign.
With the prolific Erling Haaland absent as he recovers from injury, Argentine striker Julian Alvarez impressed with a goal and two assists and Riyad Mahrez was also on the scoresheet.
The night, however, belonged to Lewis.
City were confirmed as Group G winners and Sevilla assured of third spot, and Pep Guardiola made seven changes to his starting line-up with 17-year-old right back Lewis seizing his opportunity at the Etihad Stadium.
Rafa Mir gave Sevilla the lead in the 31st minute with a pinpoint header past City reserve keeper Stefan Ortega and the hosts struggled to make much impression against the Spanish side.
Guardiola took off Jack Grealish at half-time and sent on Rodri and City were a different proposition as they extended their unbeaten home run in the Champions League to 23 games.
Lewis, joined in the starting side by 20-year-old Cole Palmer, levelled in the 52nd minute when he ran on to a slide rule pass by Alvarez and lashed a right-footed shot into the net past keeper Yassine Bounou.
Lewis, aged 17 years and 346 days, became the youngest player to score on his first Champions League start, breaking the record held by Karim Benzema who was 17 years and 352 days when he scored for Olympique Lyonnais.
Alvarez, who started his fourth successive Champions League game, was arguably City's best player.
The 22-year-old former River Plate player produced a composed finish to put City ahead in the 73rd minute, taking the ball around Bounou and firing high into the net after being played in by a sublime pass from substitute Kevin de Bruyne.
With City dominating, Mahrez sealed the victory with a clinical finish after another assist by Alvarez.
City won the group with 14 points and Borussia Dortmund also going through to the last 16 as runners-up on 9.
Zakaria grabs debut goal as Chelsea beat Dinamo Zagreb
Chelsea midfielder Denis Zakaria scored on his debut as his side finished their Champions League Group E campaign with a 2-1 win over Dinamo Zagreb at Stamford Bridge, topping the group and ending the European campaign for the Croatians.
Chelsea, who had secured group victory with a game to spare, finished on 13 points, three ahead of runners-up AC Milan, who beat third-placed Red Bull Salzburg 4-0. Dinamo finished bottom on four points, two behind Salzburg.
Making his first start under Graham Potter, keeper Edouard Mendy got off to a dreadful start when he had to pick the ball out of the Chelsea net in the seventh minute after Bruno Petkovic gave the visitors the lead with a header.
Chelsea were soon level, Raheem Sterling making the most of a slip by Dino Peric 11 minutes later to cut inside and fire home with his left foot.
Playing his first game since joining on loan from Juventus on Sept. 1, Switzerland international Zakaria put the Blues ahead on the half-hour mark with a perfectly-placed shot after good work by Mason Mount to create the chance.
In a worrying moment for England boss Gareth Southgate, Chelsea fullback Ben Chillwell pulled up with what appeared to be a hamstring injury in second-half injury time, hopping towards the dressing room helped by medical staff as the game finished 2-1.
Benfica rout Maccabi, take top spot ahead of PSG
A stoppage-time goal by Joao Mario completed a stunning 6-1 win for Benfica at Maccabi Haifa, which lifted the Portuguese side top of Champions League Group H ahead of Paris St Germain.
Goals from Goncalo Ramos, Petar Musa, Alex Grimaldo, Rafa Silva, Henrique Araujo and Joao Mario - five of them in the second half - put Benfica on to 14 points, level with PSG on points and goal difference but ahead of the French champions having scored more away goals.
Maccabi finished bottom of the standings with three points, level with Juventus who ended up third on goal difference and will go into the Europa League.
Mario's superb long-range strike prompted wild celebrations as the Benfica substitutes and coaching staff ran onto the pitch.
Maccabi competed strongly in a compelling first half.
Dean David sent a great chance wide for the hosts before Ramos struck with a towering header to put Benfica in front.
Maccabi equalised through a penalty by Tjarron Chery and Benfica coach Roger Schmidt made two substitutions in the 32nd minute, replacing Fredrik Aursnes and Ramos with Musa and Chiquinho.
Benfica dominated the match and finally converted one of their chances with a nice diving header by Musa from a deep cross by full back Alexander Bah.
Grimaldo slotted in an unstoppable long-range free kick for the third goal, Silva added a fourth and Araujo beat the offside trap in the 88th minute to grab the fifth with a tap-in.
Benfica continued to pour forward with their relentless high-press game and deep into stoppage time Mario's excellent strike sent them into the last 16 as group winners.
PSG win at Juventus but finish second in group
A second-half goal by defender Nuno Mendes earned Paris St Germain a 2-1 win at Juventus in the Champions League but they were pipped to top spot in Group H by the slimmest of margins after Benfica hit Maccabi Haifa for six.
Benfica thrashed Maccabi 6-1 in the other group game to ensure the Portuguese and French teams ended level on 14 points, having drawn their two head-to-heads 1-1 and both with a goal difference of nine.
But Benfica finished top courtesy of more away goals scored in all games, with a tally of nine compared to PSG's six after Joao Mario's strike deep into stoppage time sent them into the last 16 as group winners.
An injury-depleted Juventus, who lost 4-3 at Benfica last week and will not participate in the knockout stages of the Champions League for the first time since 2013-14, secured the Europa League spot by finishing third on three points.
Massimiliano Allegri's side needed to at least equal Maccabi Haifa's result to avoid finishing bottom.
Forward Kylian Mbappe broke the deadlock in Turin in the 13th minute when he received the ball from Lionel Messi and dodged through Juve's defence to unleash a low shot inside the far post.
It was the Frenchman's seventh goal in the competition this season, after he also netted twice in the reverse fixture in September, and moved him level with Liverpool's Mohamed Salah at the top of the scoring charts.
Juventus levelled shortly before halftime after Juan Cuadrado sent the ball into the six-yard box with a diving header and defender Leonardo Bonucci tapped it in.
PSG sealed the win in the 69th minute when Mbappe found Mendes with an excellent cross between two Juve players for the substitute to score within one minute of coming on.
Juventus thought they had pulled level again in the 77th minute after PSG keeper Gianluigi Donnarumma saved an effort by Filip Kostic and midfielder Manuel Locatelli netted on the follow up -- but his effort was ruled out for offside.
The defeat ensured Juventus lost five of their six Champions League group stage matches for the first time.
Prior to this season, they had only ever suffered five defeats in one Champions League season back in 2002-03, when they lost one game in the first group stage, three in the second as well as one of their semi-final legs.
Copenhagen score maiden goal in draw with Dortmund
FC Copenhagen scored their first goal in this season's Champions League campaign, drawing 1-1 with already qualified Borussia Dortmund in their last Group G game.
The Danes had been condemned to last place from the previous matchday and although the match lacked sporting significance the hosts got off to a strong start.
They forced Dortmund keeper Gregor Kobel to make a superb save to deny teenager Roony Bardghji in the 10th minute.
Despite resting several players, Dortmund struck first through Thorgan Hazard's well-taken shot at the far post against the run of play in the 23rd minute.
Copenhagen put the Germans firmly on the back foot in the first half and had 12 shots on goal before being rewarded with Hakon Haraldsson's 41st-minute equaliser, their first goal in the group stage.
Dortmund improved after the break and hit the post through substitute Youssoufa Moukoko in the 64th minute as they qualified behind Group G winners Manchester City who beat third-placed Sevilla 3-1.
The Spaniards will go into the Europa League.