Darwin Nunez, who had earlier missed an open goal from six yards out, headed in to double the advantage shortly after the break and Harvey Elliott rounded off the scoring with his second goal in as many Champions League games.
"Darwin was really angry with himself at half-time," Liverpool left-back Andy Robertson told BT Sport.
"I sat next to him at half-time and told him I would put a cross in to his head for him to score."
Liverpool join Napoli in progressing from Group A, but need a four-goal victory at Anfield in six days' time to pip the red-hot Italians to top spot after their 3-0 win over Rangers.
Inter finish job
Inter Milan romped to the win they needed to go through and eliminate Barca from Group C, thrashing Czechs Viktoria Plzen 4-0 at the San Siro.
Romelu Lukaku came off the bench to score on his return from injury late on, after Henrikh Mkhitaryan's opener and a double for Edin Dzeko.
That left the financially struggling Catalans digesting a group-stage exit for the second straight season.
The five-time champions were unable to at least lay down a marker on their way out, falling to a 3-0 home loss by Bayern Munich at a subdued Camp Nou.
Sadio Mane, Eric Maxim Choupo-Moting and Benjamin Pavard scored as Bayern wrapped up first place in the group with a fifth successive win.
"On a night like this, you don't go out to play the game with the same motivation," admitted Barca midfielder Pedri.
"We wanted to give the fans a victory but it wasn't to be."
Late VAR drama
Porto earlier beat Club Brugge 4-0, although knew an Atletico Madrid victory against Bayer Leverkusen would set up a deciding Group B match between the Portuguese and Diego Simeone's team next week.
But Atletico's Yannick Carrasco missed a penalty, which was awarded by VAR after the initial final whistle, in a remarkable 2-2 draw to send Porto through.
Xabi Alonso's Leverkusen led twice thanks to goals from Moussa Diaby and Callum Hudson-Odoi.
But Carrasco's first-half strike and Rodrigo de Paul's equaliser gave Atletico 40 minutes to find a winner and keep their Champions League campaign alive.
In chaotic scenes, the players were called back onto the pitch after VAR spotted a handball from the final attack of the game.
But Carrasco's spot-kick was saved by Leverkusen goalkeeper Lukas Hradecky, Saul Niguez headed the rebound off the bar and Reinildo Mandava's following effort was denied by a last-ditch block.
Porto, trailing leaders Brugge by one point, could still snatch top spot, while Atletico and Leverkusen will fight over a Europa League place.
Spurs thought they had won against Sporting to qualify from Group D when Harry Kane found the net deep into added time, only for the goal to be ruled out for offside after a lengthy VAR delay as it finished 1-1.
Sporting took a deserved first-half lead through former Tottenham youngster Marcus Edwards' fine strike, but Rodrigo Bentancur scored with 10 minutes left to set up a grandstand finish.
Kane celebrated wildly with the home fans in London when he scored what appeared to be a last-gasp winner, but VAR had other ideas.
"VAR is doing a lot of damage," said Tottenham manager Antonio Conte, who was sent off for his protests.
"I want to see if in another stadium of a big team if they are ready to disallow this type of goal. I'd like to know this."
All four teams in the group can still qualify heading into the last games after Eintracht Frankfurt beat Marseille 2-1 in Germany.