Barcelona out-classed Ferencvaros and eased their way to a 3-0 away win for a fifth consecutive Champions League win which took them to the brink of clinching top spot in their group.
Lionel Messi was rested and missed a second European trip in a row but Barca barely noticed their captain's absence as goals from Antoine Griezmann, Martin Braithwaite and a penalty from Ousmane Dembele gave them a three-goal lead before the break.
Ronald Koeman's side continued to dominate in the second half and Dembele missed three chances to add to their lead while Miralem Pjanic also came close.
Barca, who have already qualified for the knockout stages, lead Group G with a maximum 15 points. They host second-placed Juventus in their final game next week and will finish top if they avoid defeat.
RB Leipzig squandered a two-goal lead before Alexander Sorloth's stoppage-time goal earned them a 4-3 victory at Istanbul Basaksehir in Champions League Group H on Wednesday and kept the German side in the running for a top-two finish.
Sorloth drilled in his shot after the Turks had fought back thanks to Irfan Kahveci.
First-half goals from Yussuf Poulsen and Nordi Mukiele gave Leipzig a two-goal lead and Dani Olmo made it 3-1, but the Turks twice cut the deficit and levelled when Kahveci completed his hat-trick.
Leipzig, semi-finalists last season, are on nine points, level with Manchester United and PSG, who won 3-1 at Old Trafford.
Basaksehir are eliminated from the Champions League.
Borussia Dortmund overcame the absence of injured top scorer Erling Haaland to draw 1-1 with Lazio in Champions League Group F and advance to the knockout stages with a game to spare.
The 20-year-old Haaland, who has scored 16 goals in 12 Champions League appearances, was surprisingly not in Dortmund's starting lineup and his coach Lucien Favre said a muscle injury would sideline the Norwegian until January.
It was Lazio who had the better chances in the first half but the hosts, who clearly missed Haaland's scoring instinct, struck against the run of play a minute before the break.
The Germans scored with their first real chance, Raphael Guerreiro prodding in after a quick passing move split open the Italian defence.
Lazio's Ciro Immobile, playing against his former club, levelled with a 67th-minute penalty and the Italians then forced Dortmund keeper Roman Buerki to make two outstanding saves to send his team through.
Dortmund are on 10 points with second-placed Lazio on nine and needing at least a point in their final game against Club Brugge, who have seven after beating last-placed Zenit St Petersburg 3-0.
Juventus forward Cristiano Ronaldo scored the 750th goal of his remarkable career in a 3-0 win over Dynamo Kyiv as Stephanie Frappart became the first female referee to take charge of a Champions League match.
Krasnodar striker Marcus Berg scored in the second half to seal a 1-0 win over Rennes and third place in Group E that earned them a spot in the second-tier Europa League.
Swede Berg, who had been denied by Rennes goalkeeper Romain Salin in the first half, bullied skipper Damien Da Silva off the ball and fired home in the 71st minute to ensure all three points for the Russian side.
Victory meant Krasnodar, who drew 1-1 with fellow Champions League group stage debutants Rennes in France in October, have four points heading into their final group match with Chelsea and are guaranteed a spot in the Europa League last 32.
Rennes, with one point, will host Spanish side Sevilla in their final match next week with nothing to play for.