A round-up of Tuesday's action in the UEFA Champions League.
Late goals from Mohamed Salah and Darwin Nunez earned Liverpool a 2-0 victory over Napoli on Tuesday but it was not enough to deny the Italians top spot in Champions League Group A.
Both teams had already sealed a knockout-stage place, but top spot in the group, and a potentially more favourable last-16 opponent, was still up for grabs, with Liverpool needing to beat Napoli by four goals or more to sneak to the summit.
The first half felt like an encounter where both teams' main priority had been fulfilled, but the game sprang to life early in the second when Leo Ostigard thought he had put Napoli in front, only for his header to be ruled off-side after a VAR check.
With nothing to lose and top spot out of reach Liverpool did at least manage to secure victory on the night, with Salah prodding home at the far post five minutes from time, before Nunez added a second in stoppage time.
Napoli's 4-1 demolition of Liverpool in their group opener in September proved crucial in the end, as they finished on 15 points, the same as Liverpool, but with a better goal difference in clashes between the pair.
When the draw was made, few would have tipped Napoli to be group winners ahead of last season's finalists Liverpool, but Luciano Spalletti's team have been in sensational form right from the start of the campaign.
Napoli travelled to England unbeaten in all competitions all season, having won their last 13 games in a row – a run stretching back to before their humiliation of Liverpool in September.
They took a more reserved approach from the off at Anfield, happy to sit back and invite pressure from the hosts.
Nigerian striker Victor Osimhen, who had scored six goals in his previous four games in all competitions, should have done better from a good position in the first half, before Liverpool countered and Thiago Alcantara brought a fine save out of Alex Meret in the away goal.
The game needed something to ignite it, and Napoli's overturned opener did just that, with the Italians frustrated by how long the decision took to make.
Liverpool stepped it up a gear after that, with Nunez making a real difference when he came off the bench.
It was the Uruguayan whose header was saved before Salah prodded in, and he showed his poacher's instincts at the death to tap home, a goal awarded following another lengthy VAR review.
Salah has now scored 43 Champions League goals and is just one goal away from equalling Didier Drogba as the top scoring African player in the competition.
Spurs beat Marseille, qualify as Group D winners
Tottenham Hotspur grabbed an unlikely last-gasp 2-1 victory at Olympique de Marseille to reach the Champions League last 16 as Group D winners after a nerve-jangling conclusion.
The Londoners, who needed only to avoid defeat to go through, suffered a first-half siege and trailed to Chancel Mbemba's header in stoppage time before the break.
However, French central defender Clement Lenglet proved to be Tottenham's saviour when he headed in his first goal for the club in the 54th minute to bring the scores level.
Spurs, who lost forward Son Heung-min to a head injury in a torrid opening period, were a different team after the interval and took control after Lenglet's equaliser.
Pierre-Emile Hojbjerg struck the crossbar for the visitors but Marseille should have scored late on when Sead Kolasinac somehow missed an open goal with a header.
Hojbjerg then sealed the victory in stoppage time to put Tottenham top of the group and leave Marseille, who at one point in the evening were top, in fourth spot and out of Europe.
Marseille's Virage Nord section of their Stade Velodrome was closed because of crowd trouble but the noise was still deafening from the moment the game kicked off.
Only a victory would do for the home side and they set about trying to get it in frenzied fashion, swarming all over Spurs whose coach Antonio Conte had to sweat in the stands after his red card in last week's draw with Sporting.
Former Arsenal forward Alexis Sanchez almost scored in the third minute with a deft header and soon after produced a great turn to force a save from Hugo Lloris.
Lloris also kept out Jordan Veretout's fierce volley and Tottenham's night took a turn for the worse when Son had to go off after a nasty collision with Mbemba.
The visitors were hanging on and hoping for the halftime whistle when Mbemba rose high into the air to thump a header past Lloris from Veretout's cross to open the scoring.
At that stage it was hard to see how Spurs could recover but they were transformed after the break.
Lenglet headed in Ivan Perisic's pinpoint delivery to get Tottenham level and their confidence soared.
A goal would still have taken Marseille through and they came close on several occasions but Spurs wrapped it up in stoppage time when Harry Kane released Hjojberg who smashed a shot into the net to send the visiting fans into ecstasy
Tottenham won the group on 11 points with Eintracht Frankfurt on 10, Sporting with seven and Marseille on six.
Eintracht rally to down Sporting and reach last 16
Eintracht Frankfurt staged a second-half comeback by scoring twice in 10 minutes to beat hosts Sporting 2-1 and qualify for the Champions League last 16 for the first time, knocking the Portuguese out of the competition.
The Europa League champions pulled themselves out of the depths of despair at half-time when they were facing certain elimination and with goals from Daichi Kamada and Randal Kolo Muani after the break left the pitch as unlikely winners.
Eintracht finished Group D in second place on 10 points from six games, with Tottenham Hotspur top on 11 after their last-gasp 2-1 victory at bottom club Olympique de Marseille. Sporting are third and will continue in the Europa League.
Sporting needed only a point to advance to the knockout stages but would have fallen a goal behind in the 13th minute were it not for a reflex save by Sporting keeper Antonio Adan to stop team mate Paulinho from heading an own goal.
The hosts had Nuno Santos taken off with what looked like a serious ankle injury early in the game but still took the lead when winger Arthur Gomes volleyed home at the far post after a looping cross was headed on in the 39th minute.
Eintracht hardly got a look-in during the first half and were clearly lacking ideas, with Sporting doing really well to quickly shut down spaces.
But the hosts lost their way when Eintracht came out fighting, desperate for a win to secure a top-two finish.
The pressure soon paid off when a handball by Sporting captain Sebastian Coates in the 62nd gave Frankfurt a penalty and Kamada drew them level with a well-taken spot kick.
France international Kolo Muani then powered into the box and drilled home the winner in the 72nd to complete their comeback and secure a place in the knockout stages of their first Champions League campaign.
Bayern end perfect group stage with win over Inter
Bayern Munich completed a perfect group stage by beating fellow qualifiers Inter Milan 2-0 thanks to goals from Benjamin Pavard and Eric Maxim Choupo-Moting in their final Group C game.
Bayern ended top on 18 points, eight ahead of second-placed Inter with both teams having already reached the knockout stage.
Barcelona finished third on seven points, eliminated in the group stage and having to settle for a Europa League place for the second year in a row.
With Bayern and Inter having nothing riding on the game, it was an affair that won't live long in the memory.
Having won their last six games in all competitions and with Group C top spot already secured, Bayern's Julian Nagelsmann rested several regulars and Inter were better at the beginning.
They pressed the hosts early and complained about a handball inside the area by a Bayern defender at the beginning of the first half but the referee, after checking the pitchside monitor, decided there was no infringement.
Inter could have scored first in the 27th minute if Lautaro Martinez had not missed a sitter. Robin Gosens made a great run down the left and delivered a perfect low cross to the Argentine who ballooned his close-range finish over an empty goal.
In the very next move, Pavard did score for Bayern with a header from a perfectly placed Joshua Kimmich corner.
Bayern took control but only extended their lead midway through the second half when Choupo-Moting drilled an unstoppable long-range strike into the top right corner.
The Cameroon striker has six goals and two assists in the last five games for Bayern in all competitions.
Barcelona cruise past Viktoria Plzen
Ferran Torres scored in each half as Barcelona eased past Victoria Plzen 4-2 but both sides were already eliminated from the competition.
Barcelona remained in third place in Group C behind Bayern Munich and Inter Milan and will drop into the Europa League. Viktoria Plzen ended their European campaign without a point.
Barcelona, who rested a number of regulars including Polish striker Robert Lewandowski, struck six minutes into the match when defender Marcos Alonso poked the ball over the line after it squirmed past the Plzen goalkeeper.
The visitors doubled the lead just before the break when Jordi Alba deftly nodded the ball to the feet of an unmarked Torres who calmly slotted the ball into the net for a goal initially ruled out before a VAR review.
The Czech champions briefly cut the deficit in half when Tomas Chory converted a penalty after winning a spot kick in the 51st minute before Torres nabbed his second of the night on the break minutes later.
Plzen responded with a glancing Chory header in the 63rd minute to potentially set up a nervy finish until Pablo Torre slammed a shot into the roof of the net on his Barcelona debut to wrap up the victory.
Ajax overcome Rangers, qualify for Europa League
Ajax Amsterdam made sure of a place in the Europa League after beating Rangers 3-1 away at Ibrox to heap further Champions League misery on the Scottish club.
Ajax finished third in Group A, behind Napoli and Liverpool, and will compete in the Europa League knockout round playoffs as Rangers finished bottom after losing all six group games -- the first Scottish side to suffer the fate -- and returned the worst figures in the three decades of Champions League group competition.
Steven Berghuis put Ajax ahead with a miscued effort in the fourth minute after being teed up by Mohammed Kudus, who then added a second with a deflected shot in the 29th minute.
Rangers captain James Tavernier pulled one back from the penalty spot four minutes from time, for only their second goal of the group stage, but Ajax restored their two-goal advantage through teenage substitute Francisco Conceicao two minutes after.
Rangers, who needed to win by five goals to move above Ajax and take the Europa League berth, were jeered off at half-time.
They conceded 22 goals in their six group games for a negative goal difference of minus 20, which beats the previous worst group return by Dinamo Zagreb in the 2011-12 campaign when they lost all six games and finished with a goal difference of minus 19.
Czech club Viktoria Plzen also lost all six games this season with a minus 19 goal difference after losing 4-2 at home to Barcelona on Tuesday.
Porto beat Atletico 2-1 to top Group B
Goals from Mehdi Taremi and Stephen Eustaquio helped Porto secure a 2-1 win at home to Atletico Madrid to finish top of Champions League Group B.
Porto had already qualified for the last 16 but leapfrogged Club Brugge to finish as group winners with 12 points, one point ahead of the Belgians, who also went through.
Atletico finished last, failing even to qualify for the second-tier Europa League knockout round play-offs.
Porto went ahead in the fifth minute when forward Taremi tapped in a cross from Evanilson, registering his fifth goal in the Champions League this season.
Midfielder Eustaquio doubled Porto's lead in the 24th minute, drilling the ball into the bottom corner after Galeno sprinted down the left and played a cross inside the box.
Atletico's Antoine Griezmann found the net in the 68th minute but the referee had already blown the whistle for a foul from Rodrigo De Paul on Galeno in the build-up, while Porto keeper Diogo Costa saved a shot from Angel Correa six minutes later.
Porto defender Ivan Marcano scored an own goal in added time, but it did not do much damage to Porto who went on to seal three points.
Brugge finish second, Leverkusen third
Club Brugge finished second in their Champions League group after failing to win at Bayer Leverkusen on Tuesday, instead drawing 0-0 in their final Group B game.
The Belgian club were usurped by Porto, who made sure of top spot with a 2-1 home win over Atletico Madrid.
Upstarts Brugge had already qualified for February's round of 16 following their first four games after emerging as the surprise package of the Champions League group campaign.
But a 4-0 defeat at home to Porto last week and the draw at the Bay Arena on Tuesday meant they ended on 11 points from their six games, one behind Porto.
Leverkusen finished third to take a Europa League place ahead of bottom side Atletico on their head-to-head results against the Spanish club after both finished on five points.
Brugge came closest to victory on Tuesday when their Canada international Tajon Buchanan struck the upright shortly after halftime although Leverkusen were the more attacking and forced visiting goalkeeper Simon Mignolet to make some key saves.
Mignolet kept five clean sheets in the six group games.