- Manchester City crashes out of Europe following 1-0 defeat in Dortmund
- Kaka becomes the all-time leading Brazilian goalscorer in the Champions League
- Zenit records shock 1-0 win at AC Milan to secure Europa League berth
- Olympiakos defeats Arsenal 2-1 to qualify for Europa League
Manchester City crashed out of European competition following a 1-0 defeat at Borussia Dortmund.
Julian Schieber scored the only goal of the game to claim victory for the Germans and kill off any hopes City had of reaching the Europa League.
City has endured a dismal Champions League campaign and knew its hopes of reaching the last-16 had already faded before the trip to Dortmund.
But it had hoped to at least pick up the consolation of making it through to the Europa League, especially with Ajax facing Real Madrid at the Bernabeu.
But that dream was left shattered as the English Premier League champions were given a reality check.
Boss Roberto Mancini will now look ahead to Sunday's Manchester derby after his team became the first from England to not win a single group game in the competition.
"We lost our qualification tonight," he told reporters. "We lost it before tonight, we tried (to qualify) but we're missing more players. We had the chance to score but if in these moments you don't score it's difficult to win.
"We are not in the Europa League, and for this we should be disappointed."
Elsewhere in Group D, Kaka scored the 28th Champions League goal of his career to become the all-time leading Brazilian goalscorer in the competition.
The Real Madrid star was on target during his side's 4-1 win over Ajax with Cristiano Ronaldo and a brace from Jose Callejon completing the rout.
Kaka's strike takes him past former Barcelona star Rivaldo, who had led the way with 27 goals to his name.
Ronaldo's effort was his 61st goal of 2012, one more than last year, and his seventh against Ajax in the Champions League.
The win means Real qualify in second place behind Borussia Dortmund.
In Group A, Paris Saint-Germain claimed a 2-1 victory and top spot against Porto with both teams already having qualified for the next stage.
Thiago Silva and Ezequiel Lavezzi were on target for the home side with Jackson Martinez netting for Porto, which finishes second in the group.
Dynamo Kiev was forced to play through a snow storm during its 1-1 draw at Dinamo Zagreb.
Both teams were led off the field with just 11 minutes on the clock as a blizzard forced the game to be halted.
After a 17 minute delay, it was Kiev which looked like emerging victorious thanks to Andriy Yarmolenko's strike on the stroke of halftime.
But a 90th minute penalty by Ivan Krstanović, Dinamo's first goal of the competition, rescued a point for his side.
Schalke topped Group B following a hard-fought 1-1 draw at Montpellier.
The German side took a 56th minute lead through Benedikt Höwedes only for Emanuel Herrera to grab an equalizer.
Olympiakos will play in the Europa League following its 2-1 win against an Arsenal side, which had already qualified for the last-16.
The visitors had taken the lead through Tomas Rosicky but goals from Giannis Maniatis and Kostas Mitroglou gave the Greek side victory.
In Group C, Zenit St.Petersburg pulled off a shock 1-0 win at AC Milan.
Captain Danny scored the only goal of the game after 35 minutes to ensure the Russian side's place in the Europa League.
Milan finish second in the group, four points behind winners Malaga.
The La Liga club, which was held 2-2 by Anderlecht, became the first side from Spain to start a Champions League game with just one Spanish player.
Duda scored both goals for Malaga with Anderlecht's strikes coming from Milan Jovanovic and Dieumerci Mbokani.