Atletico Madrid eased through to the Champions League knockout stages with a comfortable win over Austria Vienna.
They were joined by fellow Spaniards Barcelona, whose 3-1 win over AC Milan included two goals from Lionel Messi.
They join Bayern Munich and Manchester City, who had already qualified from Group D on Tuesday.
The European champions beat Viktoria Plzen 1-0, while City made the last 16 for the first time with a 5-2 win over CSKA Moscow.
There were no goals in Group A on Tuesday night, with Real Sociedad holding Manchester United and Shakhtar Donetsk and Bayer Leverkusen drawing 0-0 after the German side's goalkeeper Bernd Leno made a series of fine saves.
Leaders United failed to get the win they needed in Spain to reach the last 16 but a victory for the English side in their next game against Leverkusen will put them through.
Leverkusen's superior head-to-head record with Shakhtar means they will progress if they take four points from their last two games, at home to United and away to Real Sociedad.
Four points could also be enough for Shakhtar. If the Ukraine side beat Real Sociedad and Leverkusen beat United in the next round of fixtures, they would qualify ahead of David Moyes's side with a 2-2 draw at Old Trafford.
Sociedad have only one point from four games but can still go through if they win their final two group games and United beat Leverkusen and get at least a draw with Shakhtar.
Real Madrid drew 2-2 with Juventuson Tuesday but need one more point to be sure of qualification.
Even if they lose to Copenhagen and Galatasaray in their next two games, Real are unlikely to be denied a place in the last 16.
Copenhagen and Galatasaray would need to both beat Juventus and overturn Real by huge margins to outweigh the 4-0 and 6-1 defeats they suffered respectively in their first meetings with the Spanish giants.
If Juventus lose to Copenhagen next time out they will be eliminated. A draw would keep them in the competition, but leave them at the mercy of other results in the final round of matches. Victory in their last two matches would take them above both Copenhagen and Galatasaray and into the last 16.
Should Copenhagen and Galatasaray finish level on points in second position, the Turkish side would progress after winning 3-1 at home and losing by the one goal, Daniel Braaten's impudent backheel, in Denmark on Tuesday night.
Zlatan Ibrahimovic salvaged a draw for Paris St-Germain against Anderlecht as the French champions were made to wait for a Champions League last-16 spot.
Demy De Zeeuw put Anderlecht ahead after 68 minutes but Ibrahimovic levelled almost immediately, poking home at the second attempt after his first effort hit the post.
PSG will qualify if they beat Olympiakos in their next game on 27 November.
Olympiakos have a superior head-to-head record against Benfica so need four points to be sure of their progress. After going to Paris, they host Anderlecht on 10 December.
Four points could also be enough for Benfica if they beat Anderlecht and Olympiakos lose their last two games.
Anderlecht need to beat Benfica and Olympiakos and hope PSG beat Olympiakos and get at least a draw against Benfica.
Bayern Munich and Manchester City are through to the last 16, with the German side sitting top of the group with a 100% record.
Bayern equalled Barcelona's Champions League record of nine straight wins by beating Viktoria Plzen on Tuesday.
Bastian Schweinsteiger hit the post and Plzen keeper Matus Kozacik made several good saves before Mario Mandzukic headed home Philipp Lahm's cross in the second half.
Either City or Bayern could still finish top but the only other thing to play for is the Europa League spot for the team finishing third.
That is between CSKA Moscow, whose only points so far have come from a win over Plzen, and the Czech champions who are bottom after losing all their matches.
Chelsea moved three points clear at the top of Group E with their 3-0 win Schalke, who had started the night level on points with the Blues.
Jose Mourinho's side just need a point from their next match, at home to Basel, to secure qualification
The Swiss side could have gone into second place if they had beaten Steaua Bucharest, but the Romanians were a goal ahead for much of the game after striker Federico Piovaccari fired them ahead after 17 minutes.
Steaua were a few minutes away from going up into second place when substitute Giovanni Sio equalised for Basel in injury time.
Arsenal and Napoli are still level at the top of the group, on nine points, after their respective wins on Wednesday night.
The Gunners became the first English team to inflict defeat on Dortmund in the Westfalenstadion thanks to Aaron Ramsey's header, and they top the group after their victory over the Italian side earlier in the campaign.
Marseille had taken the lead after 10 minutes, but Napoli were ahead before half-time through two goals in as many minutes.
The French side drew level after the break, but Gonzalo Higuain's second goal of the night gave the Italians a lead that they hung on to until full time, eliminating Marseille in the process.
If Arsenal beat Marseille at home, they will require just a point from their final match when they face Napoli away.
Napoli travel to Dortmund on match day five, but the German side, last season's Champions League runners-up, must win to stay in the competition if Arsenal beat Marseille. Even a draw would not be good enough for Jurgen Klopp's side if Arsenal win, as even if they drew level with Napoli with a win in the final match their head-to-head with would be inferior.
Atletico Madrid eased through to the last 16 with a 4-0 win over Austria Vienna.
The Spanish side were three goals ahead by half-time, through Miranda, Raul Garcia and Filipe Luis, and Diego Costa's 14th goal in all competitions in the second half ensured that Atletico will qualify as group winners.
With 12 points, they cannot be caught by Zenit St Petersburg, who have five points after their 1-1 draw at home to FC Porto.
Lucho had put the Portuguese side ahead halfway through the first half, but Zenit striker Hulk, playing against his old club, levelled five minutes later.
The Brazilian had the chance to put Zenit ahead from the penalty spot in the second half, but his weak effort was saved by Helton.
A win for Zenit will move them onto eight points if they beat Atletico on match day five, while Porto face the Austrian outfit, who have one point from four games.
Barcelona booked their place in the last 16 with a 3-1 win over AC Milan.
Lionel Messi scored two goals either side of the break, with his first coming from the penalty spot, with Sergio Busquets grabbing the other while Gerard Pique's own goal had given Milan hope just before half-time.
Lasse Schone's superb goal was enough to give Ajax a win over Celtic that gives the Dutch side hope and leaves the Scottish champions struggling to qualify for the last 16.
Celtic need at least a point from their home meeting with Milan to retain hope of qualifying.