Champions League round-up: Borussia Dortmund's vital victory
Last season's losing finalists Borussia Dortmund kept alive their hopes of reaching the Champions League knockout stages by beating Napoli 3-1.
Arsenal's 2-0 victory against Marseille ensured Dortmund would have gone into the Europa League had they not won.
Elsewhere, Gerardo Martino suffered his first loss as Barcelona boss as his side were beaten 2-1 at 10-man Ajax.
Steaua Bucharest, Marseille, Austria Vienna and Celtic were all eliminated from European competition.
Basel and Schalke face each other in the final round of fixtures, with one place in the knockout stages available.
Despite losing for the second time in this year's competition to Basel thanks to Mohamed Salah's late strike, Chelsea are guaranteed to progress.
But Schalke missed the chance to go into the deciding game ahead of their Swiss rivals as they could only draw 0-0 with bottom-placed Steaua Bucharest. The Romanians have now gone 22 Champions League games without a win, equalling Spartak Moscow's record.
Borussia Dortmund beat a disappointing Napoli at Signal Iduna Park to remain in contention to progress.
The Italians gifted Dortmund the lead after Federico Fernandez conceded a penalty for shirt-pulling and Marco Reus scored from the spot. After the break, Jakub Blaszczykowski and Pierre-Emerick Aubameyang struck for the hosts either side of a Lorenzo Insigne goal as Jurgen Klopp's side moved into second place.
Arsenal's 2-0 win against Marseille kept them top of the standings.
Porto's hopes of making the next round were damaged as they could only draw at home with Austria Vienna. Jackson Martinez nodded in on the line to salvage a draw for the Portuguese side after Roman Kienast scored the visitors' first goal in the competition this season.
The result means Porto stay a point behind second-placed Zenit St Petersburg after the Russians ended Atletico Madrid's perfect four-game winning start. The Spanish side were denied victory by Toby Alderweireld's own goal after they took the lead when Adrian Lopez finished neatly on the counter-attack.
Barcelona missed the chance to secure top spot after falling to a deserved 2-1 defeat by Ajax. Goals from Thulani Serero and Danny Hoesen saw the Dutch side's standout first-half display rewarded with a 2-0 lead, before Xavi scored a contentious penalty after Joel Veltman was sent off for a foul on Neymar that appeared to occur outside the area.
Ajax travel to second-placed AC Milan in the final round of games with a point separating the sides after the Italians thrashed Celtic 3-0. Goals from Kaka, Cristian Zapata and Mario Balotelli condemned Celtic to bottom place in the group and eliminated them from European competition.
To see a selection of images from tonight's action go to BBC Sport's Facebook page.