Ajax produced a superb win over Barcelona to keep alive their hopes of qualifying from Champions League 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.
Borussia Dortmund have so far 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 in a 3-1 victory.
Arsenal need just a point from their final game at Napoli after the 2-0 win over Marseille.
Mohamed Salah's fine goal three minutes from time earned Basle a deserved 1-0 victory over Chelsea at St Jakob Park and completed a double over Jose Mourinho's Chelsea.
However, Schalke's 0-0 draw at Steaua Bucharest means the Blues advance to the last 16 ahead of the December 11 meeting at home to the Romanians.
Porto's hopes of reaching the Champions League knockout stages were dealt a major blow as they could only draw 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.