Cristiano Ronaldo netted two penalties as Juventus outclassed Barcelona 3-0 at the Camp Nou to claim top spot in Champions League Group G.
It was Ronaldo's first meeting with Barcelona and Lionel Messi since leaving their bitter rivals Real Madrid in 2018 and though the pair briefly embraced before kick-off on Tuesday night, it was Ronaldo who quickly made his mark.
The Portugal star tested Barca goalkeeper Marc-Andre ter Stegen early on, before opening the scoring from the spot in the 13th minute after being felled by Ronald Araujo.
Defender Danilo flashed an effort just wide as the visitors cranked up the pressure, with a stunning Weston McKennie volley putting the Italian champions two goals up and in full control seven minutes later.
Ronaldo got his second penalty when Clement Lenglet was penalised for handball seven minutes after the restart.
As he could twice celebrate with his trademark leap, Messi was left frustrated as he failed to beat Gianluigi Buffon with his five shots on target.
Things almost got worse for the Catalans 15 minutes from time when Leonardo Bonucci thought he had scored, only for a VAR review to show he had been offside as he bundled the ball in from close range.
Both sides had already qualified for the knockout stages before kick-off and while they end the group phase on 15 points, Juve take first place by virtue of a superior head-to-head record.
Under-fire Barca boss Ronaldo Koeman was left furious, however, at the nature of his side's display.
"The defeat was because of how we played in the opening 25 minutes," Koeman said.
"We started badly, we looked scared, we weren't aggressive. It looked as if we'd come out looking not to lose, as opposed to trying to control the game. We weren't good, not even positionally.
"We got better but we lost the game in the first half an hour."
Dortmund, Lazio through
Borussia Dortmund struck twice in the space of 11 second-half minutes to seal a 2-1 victory at Zenit St Petersburg in the Champions League on Tuesday and clinch top spot in Group F.
Zenit opened the scoring against the run of play when Sebastian Driussi's deflected shot ended up in the back of the net after wrong-footing keeper Marwin Hitz.
Marco Reus struck the crossbar for Dortmund on the stroke of half-time but Lukasz Piszczek drew them level in the 68th minute after a goalmouth scramble, before Axel Witsel's powerful left-footed strike from the edge of the penalty area put Lucien Favre's men in the lead.
The Russian side threw bodies forward in search of a late equaliser but Dortmund held firm to seal the victory.
The game also witnessed a moment of history, with Dortmund's 16-year-old striker Youssoufa Moukoko becoming the youngest-ever player to feature in a Champions League match when he replaced Felix Passlack in the second half.
Lazio sneaked into the Champions League lat 16 for the first time in over 20 years despite being held to a 2-2 draw at home to Club Brugge, who played the entire second half with 10 men.
Needing at least a draw to qualify, Lazio appeared totally in control as they took a 2-1 lead in less than half an hour through Joaquin Correa and a Ciro Immobile penalty, while the visitors had Eduard Sobol sent off in the 39th minute.
Instead, the Serie A side suffered second-half jitters and their nerves became even more frayed when Hans Vanaken headed Brugge level in the 76th minute.
In an incredible finish, Charles De Ketelaere rifled a shot against the Lazio bar in stoppage time as the Italians held on to finish second in Group F on 10 points, with Brugge third on eight.
Man Utd rally in vain, PSG through but game suspended
Manchester United were eliminated despite a late rally as they suffered a 3-2 defeat at RB Leipzig.
The Germans were totally dominant in the early stages and raced into a two-goal lead with goals from Angelino and Amadou Haidara, before a third in the second half from Justin Kluivert.
A Bruno Fernandez penalty sparked the visitors into life in the 80th minute and a Paul Pogba header soon after set up a tense finale, but it all came too late for United who were left to rue a sloppy start and will now drop into the Europa League.
The Champions League match between Paris Saint-Germain and Istanbul Basaksehir was suspended after both teams walked off the pitch following an alleged racist slur by the fourth official.
Play was initially halted after a row initiated in the 14th minute when Pierre Webo, Basaksehir's assistant coach, was sent off.
UEFA initially said the match would restart with a different fourth official "after consultation with both teams" but later confirmed the match would take place on Wednesday.
Manchester United's result means PSG are through.
Chelsea settle for draw
A much-changed Chelsea side were left frustrated in front of their own supporters as Krasnodar earned a 1-1 draw in the Champions League dead rubber at Stamford Bridge.
Frank Lampard's side had already been assured of top spot in Group E but former Newcastle midfielder Remy Cabella gave the Russian Premier League side the lead after 24 minutes.
Chelsea responded immediately when Jorginho converted from the spot following a foul on Tammy Abraham (28) but the hosts were unable to make their territorial dominance count during a tepid second period.
In the other Group E match, Jules Kounde's fine volley from the edge of the box and Youssef En Nesyri's double sealed a 3-1 win for section runners-up Sevilla at Rennes, who grabbed a consolation through Georginio Rutter's late penalty
Champions League last 16 draw
The line up for the last 16 is nearly complete, with the following teams through to the knockout stage:
The draw will take place at 11am on Monday, December 14 in Nyon. You'll be able to follow it across Sky Sports' platforms.
There will be two seeding pots: one consisting of the eight group winners and the other of the eight runners-up. No team can at this stage play a club from their own association - meaning no all-Premier League clashes just yet.
The ties will take place over two legs, with seeded group winners playing away in the first legs in February and at home in the return matches in March.
February 15/16 & March 16/17, 2021: Round of 16
April 6/14, 2021: Quarter-finals
April 17 & May 5, 2021: Semi-finals
May 29, 2021: Final (Istanbul)