Ajax produced a superb win over Barcelona to keep alive their hopes of qualifying from Group H.
Ajax took a shock 2-0 half-time lead as both Thulani Serero and Danny Hoesen netted their first European goals before Xavi scored a penalty after Joel Veltman was sent off, with the Dutch side withstanding fierce pressure in the remainder of the second half.
Arsenal now need a point from their final game at Napoli, after the Italian side were beaten 3-1 by Borussia Dortmund.
Beaten finalists in May, and victims to Bayern Munich once again at the weekend, Dortmund had struggled to recreate last season's swashbuckling group-stage performances and found themselves trailing Serie A runners-up Napoli by three points ahead of Tuesday night's encounter.
But an early penalty from Marco Reus gave them the upper hand before second-half goals from Jakub Blaszczykowski and substitute Pierre-Emerick Aubameyang ruled Lorenzo Insigne's response irrelevant.
Porto's hopes of reaching the Champions League knockout stages were dealt a major blow as they could only draw 1-1 at home to Austria Vienna.
Roman Kienast smashed in Vienna's first goal of the group stage so far after 11 minutes before Jackson Martinez levelled shortly after half-time.
Zenit St Petersburg enjoyed a huge slice of fortune but have still yet to book their place in the last 16 of the Champions League after a 1-1 draw with Atletico Madrid.
Adrian put the Spaniards ahead in the 53rd minute before an absolute fluke goal - when highly-rated goalkeeper Thibaut Courtois completely miscalculated a straightforward tip-over from Toby Alderweireld's defensive header - saved Zenit in the 74th minute.
Schalke's 0-0 draw at Steaua Bucharest means Chelsea advance to the last 16 ahead of the December 11 meeting at home to the Romanians, despite their 1-0 defeat at Basel.