Barcelona won without Lionel Messi to reach the Champions League knockout stage, while Cristiano Ronaldo helped send Juventus to the last 16.
An inexperienced Barca side missing Lionel Messi and many other first-team regulars eventually cruised to a 4-0 win away to Dynamo Kyiv on Tuesday to reach the Champions League knockout stages for the 17th consecutive season.
With his team on the verge of qualifying from the group and reeling from Saturday's 1-0 defeat to Atletico Madrid in La Liga, coach Ronald Koeman made eight changes to his side, including keeping captain Messi and Dutch midfielder Frenkie de Jong at home.
French forwards Antoine Griezmann and Ousmane Dembele were also left out of the starting XI as Barca named their youngest starting XI in a Champions League game in nine years, with an average age of 24.
Gerard Pique's serious knee injury against Atletico left Barca with only one fit central defender and Koeman was forced to turn to 21-year-old Oscar Mingueza, who began the season in the club's reserve side.
After a sluggish first half, the Catalans took the lead soon after the break as Sergino Dest completed a flowing move to score his first goal for the club and Martin Braithwaite soon doubled their lead with his first goal in Europe's top competition at the age of 29, diving in from close range to turn in a flicked header from Mingueza.
Braithwaite struck again in the 70th minute from the penalty spot while substitute Griezmann got the fourth goal in added time, rounding off a victory which took Group G leaders Barca on to 12 points from four games and clinched their place in the last 16.
- Champions League last 16: Draw, dates, teams
- Champions League results | Fixtures | Tables
- Last-gasp Giroud sends Chelsea to last 16
- Bruno Fernandes stars as Man Utd edge closer
Ronaldo, Morata send Juve through
Juventus joined Barcelona in the last 16 after a Cristiano Ronaldo goal and a stoppage-time header from substitute Alvaro Morata gave them a comeback 2-1 home win over Ferencvaros.
The Hungarian side took a shock 19th-minute lead through Myrto Uzuni before Ronaldo equalised in the 35th minute with a fine left-footed shot from range, moments after he had a goal scrapped for offside.
Juventus twice hit the woodwork in the second half before Morata's late header squeezed under visiting goalkeeper Denes Dibusz's body and over the line.
Juve are second in Group G on nine points from four games, three behind leaders Barcelona, but both sides advance.
Ferencvaros and Dynamo are level on one point and will vie for the consolation prize of joining the Europa League round of 32 after the winter break.
Haaland, Sancho see Dortmund close in
Erling Haaland scored twice as Borussia Dortmund topped Group F and took a big step towards qualification with a 3-0 win over Club Brugge.
The Norwegian, who struck four times against Hertha Berlin in the Bundesliga on Saturday, has now netted 16 times in his 12 Champions League games, more than anyone in the competition's history for that number of matches.
Jadon Sancho sent Haaland through in the 18th minute to open the scoring and the England international netted himself on the stroke of half-time, curling in a superb free-kick. Haaland struck again on the hour, pouncing on a mistake by Ruud Vormer.
Dortmund, who next play Lazio, are on nine points from four games with the Italians on eight and Brugge in third on four. Zenit St Petersburg are in last place.
Lazio themselves edged closer as Ciro Immobile struck twice and Marco Parolo scored his first Champions League goal aged 35 in a 3-1 win over Zenit St Petersburg.
Immobile fired Lazio in front after three minutes and converted a penalty early in the second half as he took his tally to three in three group games.
Artem Dzyuba pulled one back before Parolo restored Lazio's cushion. The Italians, in the group stage for the first time since 2007-08, have eight points from four games and are four clear of Club Brugge.
Neymar keeps PSG alive
Paris St Germain revived their hopes of reaching the Champions League knockout phase after a Neymar penalty earned a fortunate 1-0 home win against RB Leipzig in Group H.
Neymar netted from the spot with just 11 minutes gone - his first goal in the competition in six games - as PSG leapfrogged RB Leipzig into second place but the Ligue 1 side were otherwise toothless.
Dayot Upamecano, Amadou Haidara and Emil Forsberg all had good chances for RB Leipzig but an equaliser proved elusive.
The French champions have six points from four games, three behind group leaders Manchester United and ahead of third-placed Leipzig thanks to their head-to-head record.
Manchester United need just one point from their remaining two games after avenging their defeat to Istanbul Basaksehir earlier this month with a convincing 4-1 win at Old Trafford.
Marcus Rashford eventually dispatched the spot-kick he won (35) after Bruno Fernandes's double (7, 19) but a second half that appeared to be meandering to a close sparked into life with 15 minutes remaining when Deniz Turuc's free-kick reduced the deficit.
United wobbled as Edin Visca instantly rattled the crossbar, but Basaksehir's spirited fightback ultimately fell short as Daniel James added a stoppage-time fourth from Mason Greenwood's pass (90+2).
Chelsea, Sevilla through - but who will top group?
Olivier Giroud's majestic injury-time header booked Chelsea's place in the knockout stages of the Champions League as they beat Rennes 2-1.
Callum Hudson-Odoi gave Chelsea a first-half lead (21) and it looked like Frank Lampard's side would rue some wayward finishing when Serhou Guirassy headed home unmarked from a corner (85).
Both teams looked happy with a draw but Giroud - who has aired concerns over a lack of game-time at the club - came off the bench to bravely head home (90) after Timo Werner was denied.
The result, helped by Sevilla's win in Krasnodar, means the Blues and the Spanish side are guaranteed to finish in the top two of Group E, ahead of their showdown on December 2.
Sevilla had Munir El Haddadi to thank for victory as his stoppage-time goal sealed a 2-1 win over the Russians.
Ivan Rakitic put Sevilla ahead four minutes into the match with a shot from outside the area and though the hosts equalised through Wanderson, El Haddadi had the final say from close range.