Chelsea reached the Champions League knock-out stage on Tuesday despite a 1-0 defeat by Basel in Group E after a late Mohamed Salah goal shocked the 2012 title winners, with Jose Mourinho saying they deserved to lose.
Barcelona, without Lionel Messi but already into the last 16, went two goals down in Amsterdam but looked a different side in the second half after Ajax's Joel Veltman was sent off.
Milan thrashed Celtic 3-0 away and have eight points to Ajax's seven in Group H after ending the Glasgow side's hopes
Three sides in Group F - Arsenal, Napoli and Borussia Dortmund - all still harbour hopes of reaching the last 16.
Arsenal have 12 points after beating visitors Olympique Marseille 2-0, thanks to a double from England midfielder Jack Wilshere, while Dortmund, last season's losing finalists, join Napoli on nine points after beating the Italians 3-1.
Arsenal travel to Napoli on December 11 while Dortmund play at Marseille, who have yet to earn a point and have now lost eight successive Champions League matches over two seasons.
In Group G, Zenit St Petersburg and Porto still have a chance of joining section winners Atletico Madrid in the last 16. Zenit drew 1-1 at home to the Spaniards to reach six points while Porto have five after a 1-1 draw with Austria Vienna.
Mourinho's Chelsea side failed to manage a shot on goal in the first half against Basel who themselves could not find a way past Petr Cech to make their dominance count.
The visitors were little better in the second period and Salah made them pay in the 87th minute, the Egyptian collecting a long pass and lifting the ball over Cech for the winner.
"A bad performance, a deserved defeat," said Mourinho. "I did not like anything from the first minute."
Basel's double triumph over the English side gives them eight points, one fewer than Chelsea. Basel travel to Schalke 04, who drew 0-0 with Steaua Bucharest and have seven points, in the final round next month and one of the two will qualify.
Wilshere put Arsenal in front after 30 seconds with a superb curled shot but Germany's Mesut Ozil missed the chance to put the Londoners two-up when his penalty was saved before halftime.
Wilshere gave Arsenal breathing space with a second after 65 minutes and they coasted home. A draw in Napoli will book them a place in the last 16 and manager Arsene Wenger said he felt that was well within their capabilities.
"I'm confident we can take another point or three in Naples if we play well," he said.
In Dortmund, Borussia went 1-0 up with a 10th minute penalty, Marco Reus putting the spot kick away after Robert Lewandowski was fouled following a corner. Jakub Blaszczykowski doubled the home side's lead on the hour.
Lorenzo Insigne pulled one back for Napoli five minutes after coming on as a substitute from a fine pass by Gonzalo Higuain but Pierre-Emerick Aubameyang secured the three points for Dortmund with a goal 12 minutes from time.
Kaka put Milan ahead in Glasgow with the simplest of close-range headers from a corner and Milan grabbed their second via Cristian Zapata Helped by another static display from the Celtic defence shortly after halftime.
Mario Balotelli added a third on the hour to end Celtic's hopes of reaching the knockout stages.
Barcelona suffered an early shock in Amsterdam after a goal by Ajax midfielder Thulani Serero. The Spanish side's defence allowed a cross from Ricardo van Rhijn to reach the South Africa international who netted from close range.
The surprises continued when Danny Hoesen added a second for the hosts just before halftime but Xavi pulled one back for the 2009 and 2011 European champions from the penalty spot four minutes after the break.
Ajax's Veltman was sent off for a foul on Neymar that led to the spot kick and Barca began to impose themselves on the 10-man home side, but Ajax held on for the win.
"In the first half we didnt have a good attitude. At an individual level we were not as good as Ajax," said Martino.
Atletico Madrid dropped their first points of this season's competition in the 1-1 draw in St Petersburg. Adrian Lopez put the group winners ahead shortly after halftime before a Toby Alderweireld own goal secured a point for the Russian side.
Atletico lead Group G with 13 points while Zenit have six, one more than Porto.
Austria Vienna, with only one point from four games, went ahead against the run of play at Porto through Roman Kienast in the 11th minute - their first goal in this season's group stage.
The Portuguese side equalised three minutes after the break through Jackson Martinez. Porto travel to Madrid for their final game, leaving Zenit in pole position for the runners-up spot.
Image: FC Basel's Mohamed Salah celebrates after scoring against Chelsea
Photograph: Ruben Sprich/Reuters