Bayern Munich and Barcelona registered easy wins, while Manchester United came from behind to beat CSKA Moscow 2-1 and Chelsea surrendered the top spot after a 1-1 at home against Atletico Madrid.
Images from Tuesday's matches:
Bayern end PSG's perfect Euro record
Bayern Munich ruined Paris St Germain's perfect Champions League record this season with a 3-1 victory at the Allianz Arena on Tuesday but their rousing win could not stop the French side advancing as Group B winners.
With both teams already qualified for the knockout stages, Corentin Tolisso's double and another goal from Robert Lewandowski gave Bayern hope of pulling off the improbable win by a four-goal margin that would see them top the group.
Yet PSG, who had thumped Bayern 3-0 in Paris, always looked likely to avoid that indignity in a high-quality contest once Kylian Mbappe scored just after halftime when they were 2-0 down.
The top-of-the-table clash proved far from a 'dead rubber' with both sides determined to demonstrate the qualities that make them among the favourites to lift the title this season.
The German champions started hungrily, Lewandowski having time to turn and score in the eighth minute after being played onside by a careless Dani Alves, before Tolisso headed home James Rodriguez's cross in the 37th minute.
With the home crowd sensing an extraordinary story, Mbappe ruined the script when heading in from Edinson Cavani's neat chipped cross five minutes after the break.
Still, the French midfielder Tolisso kept the pressure on, finishing clinically in the 69th minute after David Alaba's storming run and cross down the left flank.
While PSG and Bayern ended on 15 points each, Celtic took third place, guaranteeing Europa League football, despite losing 1-0 at home to Anderlecht, whose second-half winner came from a Jozo Simunovic own goal.
The win represented the Belgian side's first success of the competition after five straight defeats but Celtic's previous 3-0 win at Anderlecht ensured they had the better head-to-head record.
Barcelona end Sporting's hopes with 2-0 win
Barcelona scored twice in the second half to beat Sporting Lisbon 2-0 at home on Tuesday, rounding off their unbeaten group stage campaign with a fourth win, while knocking the Portuguese side out of the competition.
With Lionel Messi left on the bench, Paco Alcacer gave Barca the lead in the 59th minute with a glancing header from a corner while former Barca defender Jeremy Mathieu clumsily slid Aleix Vidal's low cross into his own net in stoppage time.
Barca had already secured their place in the last 16 of the competition as Group D winners before the game, while Sporting needed to win and for Juventus not to beat Olympiakos in order to reach the knockouts for the first time in nine seasons.
Their hopes were quickly dashed when Juan Cuadrado put Juventus ahead in the 15th minute in Athens and Federico Bernardeschi made it 2-0 in the 90th to ensure Sporting dropped into the Europa League whatever happened at the Nou Camp.
Barca coach Ernesto Valverde made eight changes to the team that had drawn 2-2 with Celta Vigo on Saturday, including picking Thomas Vermaelen in place of injured Samuel Umtiti and starting without Messi for the second European game in a row.
Messi came on moments after Alcacer had broken the deadlock and the Argentine instantly lifted Barca's tempo. He went close to doubling their lead three times in quick succession, twice missing the target and forcing a save from visiting goalkeeper Rui Patricio.
At the other end Barca's reserve goalkeeper Jasper Cillessen made an outstanding save to thwart his Dutch international team mate Bas Dost.
Sporting defender Mathieu left Barca after an inconsistent yet trophy-filled three-year spell at Barca but had the home fans chanting his name ironically after he unwittingly knocked in the second goal to seal the victory.
Chelsea surrender top spot after draw
Chelsea surrendered the top spot in the Champions League Group C when they drew 1-1 at home against Spain's Atletico Madrid on Tuesday.
Chelsea, who had already secured their place in the knockout phase, finished second in the group behind Italy's AS Roma, while Atletico, finalists in 2014 and 2016, will drop into the Europa League after finishing third.
"Football is about finishing at the end of the day and it's clear we've not done that in the Champions League this year and we have paid the price," Atletico coach Diego Simeone said.
"It's not good to be out of the Champions League but there is still a long season ahead and we will be assessed at the end of it.
"It's not a disaster. It's a situation that can happen."
Atletico took the lead in the 56th minute when Saul Niguez headed in at the far post after flick on by former Chelsea striker Fernando Torres following a corner.
The goal was tough on Chelsea who had created a string of chances while Atletico barely troubled the hosts in the first 45 minutes.
Chelsea's pressure paid off in the 75th minute when Atletico defender Stefan Savic turned an Eden Hazard cross into his own net, setting up a climactic end to the game as both sides pushed for a winning goal.
Spain striker Alvaro Morata fired at Atletico goalkeeper Jan Oblak when he looked sure to score and Brazil winger Willian wasted an even better chance when he blazed an effort high and wide in the 82nd minute.
Substitute Michy Batshuayi went close in added time when his angled shot flew just wide of Oblak's post.
Chelsea's head coach Antonio Conte was at least content with his side's attacking intent and creativity looking ahead to the next round.
"We tried to play our game and win. In the first half we tried to push, we created many chances to score and we conceded a goal from a corner," he said.
"When you play this way and create so much you must be satisfied. Our (next) opponent won't be happy to play against us."
Manchester United reach last 16
Manchester United reached the Champions League last-16 as Group A winners after coming from behind to beat CSKA Moscow 2-1 at home and finish ahead of Basel who also went through with a 2-0 win at Benfica on Tuesday.
The result left United top of the section on 15 points, three more than second-placed Basel and six ahead of third-placed CSKA who will carry on in the second-tier Europa League after the winter break.
Having missed a string of good chances in the opening period, United fell behind to a freakish Vitinho goal, heavily deflected off Alan Dzagoev, on the stroke of halftime before Romelu Lukaku and Marcus Rashford struck within a minute to turn the match on its head.
Rashford hit the post in the fourth minute and saw a shot from a tight angle saved by CSKA's busy keeper Igor Akinfeev, who also kept out a Luke Shaw volley as United's left back enjoyed a fine evening after making his first start since April.
CSKA struck out of the blue as Mario Fernandes broke down the right and set up Vitinho, whose miscued shot struck Dzagoev in the back and bounced into the net.
United piled the pressure after the break and Akinfeev parried another fierce Rashford shot before the home side's siege finally paid dividends.
Lukaku used his physical strength to steer in the equaliser in the 64th minute, as he got on the end of a probing Paul Pogba pass despite being tugged by CSKA centre back Viktor Vasin.
Rashford got his reward for tireless work less than a minute later, drilling in a sublime Juan Mata chip with a fierce left-footed shot from 13 metres which gave Akinfeev no chance.
Needing to match CSKA's result to go through, Basel quickly established their grip on a knockout stage berth as Mohamed Elyounoussi headed the Swiss side into an early lead in Lisbon after Michael Lang's inch-perfect cross.
Another close-range header by striker Dimitri Oberlin doubled Basel's lead midway through the second half as Benfica finished bottom of the group with zero points from six games.