Porto and Malaga through; Dinamo Zagreb and Montpellier out
Manchester City fought back to draw with Ajax but their hopes of qualifying for the last 16 remain hanging by a thread, while Arsenal were held at Schalke after seeing their two-goal lead collapse.
Porto and Malaga both claimed the results needed to qualify from their respective groups, while Borussia Dortmund missed out on sealing progression as Real Madrid pulled off a crucial comeback.
Manchester City came from two goals down against Ajax at the Etihad Stadium to clinch a 2-2 draw and keep their slim qualifying hopes mathematically alive, but missed out on a much-needed win as Sergio Aguero's late attempt was controversially ruled offside.
Siem de Jong netted a first-half brace for the Eredivisie club, with his first coming after 10 minutes as he pounced at the near post before applying a sublime finish from a tight angle after City had failed to properly deal with a corner.
The Dutchman's second arrived seven minutes later as he headed in again from close range after more poor marking from the reigning Premier League champions.
City pulled one back in the 22nd minute when Yaya Toure struck, doing well to control a rogue Toby Alderweireld clearance with his chest before lashing home a superb volley.
Aguero then hauled Mancini's men level with 15 minutes left on the clock, drilling home a tidy finish from a Mario Balotelli flick-on, but his last-gasp would-be goal was ruled out by the referee.
Borussia Dortmund missed a chance to seal qualification to the round of 16 in the group's other game as they were pegged to a late 2-2 draw at Real Madrid.
Marco Reus beat Iker Casillas with a fantastic volleyed effort from Robert Lewandowski's through ball in the 28th minute but Pepe hauled Real back in it three minutes later, heading a Mesut Ozil cross home.
Mario Gotze put Dortmund back in the lead on the stroke of half-time but Los Blancos came back again through Ozil with just a minute of regular time remaining to hand Real relief as they kept the heat on the German leaders.
Arsenal threw away a two-goal lead as they were pegged to a 2-2 draw by Group B leaders Schalke at the Veltins Arena to remain second in the pool.
Theo Walcott maintained his goalscoring form for the Gunners as he netted the opener in the 18th minute in Germany, rolling the ball into an open goal after Olivier Giroud had drawn the attention of goalkeeper Lars Unnerstall with a chance moments earlier.
It was Giroud that then doubled the North Londoners' lead eight minutes later as he greeted a Lukas Podolski cross with a diving header.
But the Gunners were shaken when Schalke pulled one back on the stroke of half-time as Klaas-Jan Huntelaar drove a fine low finish past Arsenal keeper Vito Mannone after picking up an excellent Lewis Holtby pass inside the box.
Jefferson Farfan then put the Germans back on level ground, picking up the ball after a missed header from Holtby and unleashing a shot which deflected in off Thomas Vermaelen.
Elsewhere in the group, Montpellier saw their hopes of qualifying ended by Olympiakos as they suffered a late 3-1 defeat in Athens.
A fourth-minute goal from Portuguese midfielder Paulo Machado put the Greek hosts ahead but a Younes Belhanda penalty in the second half gave Montpellier a glimmer of hope.
However, that was dashed late on as Leandro Greco and Kostas Mitroglou both scored to seal the Ligue 1 side's fate.
Paris St Germain ended Dinamo Zagreb's qualifying hopes with a convincing 4-0 victory in the French capital which made it four Group A defeats from as many games for the Croatians.
Defender Alex scored a first-half opener before Blaise Matuidi, Jeremy Menez and Guillaume Hoarau cemented the win after the break as the Ligue 1 side kept their own qualifying hopes burning bright.
A goalless draw at Dynamo Kiev was enough to see Porto through to the last 16 as it took their total to 10 points, though it remains to be seen if they will finish top of Group A.
Malaga progressed to the round of 16 after drawing 1-1 with Group C opponents AC Milan at the San Siro.
Eliseu gave the Spaniards the upper hand with a first-half goal and although the visitors were pegged back by an Alexandre Pato leveller, the draw was enough to see them through.
Anderlecht kept themselves in contention in the other Group C game of the evening as they claimed a 1-0 home win over Zenit St Petersburg, with Dieumerci Mbokani netting the first-half winner.