Lionel Messi scored twice as Barcelona cruised into the Champions League round of 16 as Group C winners with a 2-0 defeat of Celtic in Glasgow on Wednesday.
Barcelona humiliated Celtic 7-0 in their first group encounter in September, with Messi scoring a hat trick in the one-sided match at the Camp Nou, and it was the Barca No. 10 who opened his side's account at Celtic Park, finishing off a sublime move from the Catalans on 24 minutes.
The five-time Ballon d'Or winner raced onto a sumptuous lobbed pass behind the defence from Neymar and lashed his first-time shot past Celtic goalkeeper Craig Gordon at the near post for a deserving 1-0 lead.
In the second half, Emilio Izaguirre pulled down Luis Suarez inside the Celtic box. Messi then stepped up to the spot and easily put Gordon the wrong way to hand Barca an unassailable 2-0 advantage.
The goal marked Messi's ninth in four Champions League matches thus far -- and 92nd overall -- placing the Argentine atop the competition's goal-scoring charts this campaign.
Messi nearly added a third in the 68th minute, but his right-footed shot slid just wide of the far post, but his effort was enough to ensure Celtic finish last in Group C.
Manchester City also advanced as Group C runners-up after a 1-1 draw against Borussia Monchengladbach, in a match that saw both sides finish with 10 men.
It was the hosts who struck first, Raffael firing home from the centre of the penalty area in the 23rd minute to give Gladbach an early 1-0 lead.
City would get back on level terms just before the break, though, as David Silva poked home from close range after Kevin De Bruyne played an incisive pass across the six-yard box.
Lars Stindl was sent off in the second half after receiving his second yellow card of the match for a hard foul on Nicolas Otamendi. Twelve minutes later, Fernandinho was shown his second yellow card for a foul on Raffael, leaving both teams to finish the match a man down.
Neither team could find the winner though, leaving City secure in second place behind Barcelona, while Gladbach move on to the Europa League.
Arsenal and Paris Saint-Germain played out an entertaining 2-2 draw in Group A which leaves the top spot up for grabs going into the final round of fixtures in a fortnight.
Unai Emery's side controlled the early stages and deservedly opened the scoring in the 18th minute when Blaise Matuidi rolled Shkodran Mustafi and played a ball across the goalmouth for Cavani to slide home.
Arsenal looked out of sorts and failed to respond until the 45th minute when they won what looked like a fortunate penalty with Alexis Sanchez adjudged to have been brought down by Grzegorz Krychowiak, and Olivier Giroud converted from the spot.
The Gunners went in front on the hour mark, again in fortuitous circumstances, when Marquinhos' clearance hit Verratti and beat Areola from close range.
PSG refused to give in though and fought back into the game from a Hatem Ben Arfa corner. Moura pulled away from Carl Jenkinson at the back post to direct a header towards goal which was taken away from David Ospina by the head of Alex Iwobi.
As it stands Arsenal, who travel to Basel on Dec. 6, have to better PSG's result against Ludogorets in order to win the group. In the event of both teams having the same result, the Parisiens will top Group A due to a better head-to-head record because of their two away goals.
Kevin Gameiro and Antoine Griezmann scored as Atletico Madrid secured top spot in Group D with a 2-0 win over PSV Eindhoven.
Atletico found the breakthrough on a counter-attack in the 55th minute as Griezmann played in Gameiro with a through ball and his shot flew past goalkeeper Jeroen Zoet.
Griezmann doubled the advantage 11 minutes later, running onto a Tiago pass before beating Zoet at his near post.
The Spanish club were already through to the round of 16 alongside Bayern Munich, but the win secured first place thanks to the German champions' stunning 3-2 defeat away to FC Rostov.
Bayern took the lead on 35 minutes when the Russian side could only half-clear a ball in the box, and Douglas Costa slammed it into the roof of the net from 10 yards. But Rostov were back level just before the break when Serdar Azmoun dribbled around Jerome Boateng and fired past goalkeeper Sven Ulreich.
After the break, Philipp Lahm missed a gilt-edged chance to put Bayern ahead, and moments later Rostov took the lead through Dmitriy Poloz's penalty following Boateng's foul in the box.
It only took Bayern two minutes to equalise as Franck Ribery played in Juan Bernat to make it 2-2, but Christian Noboa's sharp free kick put the hosts ahead for good, earning them their first Champions League victory ever.
Cenk Tosun's amazing volleyed goal sparked a wild comeback as Besiktas fought from three goals down to salvage a 3-3 draw against Benfica in Group B.
The Portuguese side entered the game only a point ahead of their Turkish hosts but quickly took the advantage when Goncalo Guedes took a through ball at the top of the box and rounded goalkeeper Fabricio in the 10th minute.
Nelsinho doubled the lead on 25 minutes when he turned and fired a blast in off the woodwork from 20 yards. Six minutes later, Benfica hit the crossbar two more times and had a shot cleared off the line before Ljubomir Fejsa finally lashed home a third.
But Tosun started Besiktas' rally in the 58th minute with a scissor kick on the volley while falling away from goal, and Ricardo Quaresma's 83rd-minute penalty after Victor Lindelof's handball made it 3-2.
Vincent Aboubakar then turned in Quaresma's remarkable rabona cross in the 89th minute to keep Group B razor thin.
Napoli still lead Group B by one point after a goalless draw at home against Dyanmo Kiev, who saw their slim hopes to move on end and will finish last.
The Italian side are level on eight points with Benfica -- with the tiebreaker to be decided when they meet on Matchday 6 -- while Besiktas remain one point back in third but could still win the group.
The battle for third place in Group A will go down to the final matchday after Ludogorets Razgrad managed a goalless draw at home with Basel.
The teams are level on two points and if both have the same result in December, the Bulgarian club will earn the Europa League spot thanks to their away goal in the opening draw against the Swiss side in September.