Manchester City needed to beat Borussia Dortmund at the Westfalenstadion this evening and hope that Real Madrid defeated Ajax at the Bernabeu to qualify for the Europa League.
Roberto Mancini had already seen his team's Champions League campaign disintegrated, with not a single win from their previous five games.
Julian Schieber scored the only goal of the game, ensuring that the Citizens become the first English team to fail to win any of their group stage matches.
You can read how all the action unfolded below.
Good evening! Welcome to Sports Mole for coverage of Manchester City's final game in the Champions League this season. It's a trip to group winners Borussia Dortmund, who have looked sensational in the competition so far.
It was 1-1 the last time these two sides met back in October. Marco Reus's goal looked to have given Dortmund a much-deserved victory, before Mario Balotelli tucked away a last-minute penalty after Neven Subotic had inadvertently handled inside the area.
Dortmund have never lost at home to English opposition (six games). Arsenal came dangerously close to ending that record last year, but Ivan Perisic's late goal kept the run going.
City have played in Germany five times, winning just once. That came back in 2008, when Benjani and Steven Ireland scored in a 2-0 win over Schalke in the group stage of the UEFA Cup.
Right, let's have some team news...
Weidenfeller; Hummels, Kirch, Santana, Schmelzer; Leitner, Gundogan; Reus, Grosskreutz, Perisic; Schieber
Hart; Maicon, Kompany, Lescott, Nastasic; Nasri, Garcia, Barry, Sinclair; Dzeko, Tevez
So Scott Sinclair gets a start in the Champions League for City. Meanwhile, Jurgen Klopp has chosen to rest Robert Lewandowski and Mario Gotze.
Dortmund have more than made up for last year, when they exited the competition in the group stage. They've looked brilliant, even if that has had an adverse effect on their league form. They are currently third in the Bundesliga, 11 points behind Bayern Munich.
Before tonight, Roman Weidenfeller, Neven Subotic, Lukasz Piszczek, Marcel Schmelzer and Robert Lewandowski had played every minute of Dortmund's Champions League games this season. Now only Weidenfeller and Schmelzer remain.
Roberto Mancini: "We are disappointed we can't go through to the second stage, but we can play in the Europa League, which is important. For Man City, it's important to win trophies and Europa League is one of these."
Mancini also denied having one eye on Sunday's Manchester derby, stating: "We think about only this match."
The teams are making their way onto the pitch, and we're just moments from kickoff at the Wesfalenstadion.
Die Gelbe Wand (The Yellow Wall) looks resplendent as ever.
Manchester City get this game underway...
It's been a bitty opening five minutes. Neither team has really settled and the action is a bit scrappy.
City have had most of the possession so far. Dortmund have misplaced a few passes already, but are keeping their shape when closing down.
SHOT! Kirch tests Hart from the edge of the area, but the England number one is equal to it. First effort on goal.
Real Madrid have taken the lead against Ajax through Cristiano Ronaldo. That bodes well for City and their hunt for Europa League qualification, but they still need to win tonight.
City are still knocking the ball around. Not doing much with it, but retaining possession really well.
Nasri slips a great ball through to Dzeko, who tries to square it for Tevez... but it bobbles across the goal mouth. The Argentine wasn't too far away, though Schmelzer was covering.
Klopp's decision to rest a few of his regulars means that Dortmund just aren't clicking at the moment. As I say that, Reus and Perisic combine, with the latter nearly picking out Schieber with a cross.
Dortmund have woken up in the last five minutes. The fans have found their voice...
SHOT! It was a decent strike by Dzeko from all of 35 yards. It dipped dangerously and Weidenfeller had to push it around the post.
SHOT! Nastasic allowed Reus to drift into the area and unleash a venomous left-footed effort that was just off target. The German international should probably have worked Hart there...
Maicon picks out Tevez, who has a free header from six yards out... but the linesman raises his flag. Weidenfeller made the save anyway.
SHOT! Perisic winds up from long range but fails to trouble Hart.
Borussia Dortmund 0-0 Manchester City
Well, it's not been great, in truth. Not much has happened. No clear-cut chances for either team, just a few long-range efforts. City have kept hold of the ball better, but it's Dortmund who have looked more menacing going forward.
You can read Sports Mole's half-time report by clicking here.
Arsenal are leading against Olympiacos thanks to Tomas Rosicky. As things stand, the Gunners would win the group. You can follow that game here.
The other game in this group is currently 2-0 to Real Madrid. That game is here.
Dortmund substitution: Jakub Blaszczykowski replaces Marco Reus.
Dortmund resume play...
Schmelzer drifts a dangerous free kick into the box and Hummels is just inches from getting on the end of it at the back post.
SHOT! What a strike! Gundogan lofts the ball from right the right over towards Perisic on the left. He strikes it first time on the volley and Hart is forced to palm over the bar. That would have been some goal.
CHANCE! Grosskreutz bursts into the area and shoots at Hart's near post, but the England keeper sticks out a strong arm to deny him! Brilliant save!
Manchester City substitution: Sergio Aguero comes on to replace Scott Sinclair.
GOAL! Dortmund 1-0 Manchester City (Schieber)
Great ball from Blaszczykowski! He burst down the right and whipped it in for Schieber, who got in between Kompany and Maicon to slide home the opener. It was an inch-perfect delivery from the Pole.
City are now in real danger of becoming the first English club not to win a single game in a Champions League campaign.
Aguero and Tevez link up nicely as City break forward. Tevez tried to stand the ball up for Dzeko, but it's put behind for a corner.
Manchester City substitution: Mario Balotelli replaces Edin Dzeko.
Aguero turns smartly and feeds Tevez, who bulldozes his way through somehow and squeezes off a shot. Weidenfeller saves for a corner.
Manchester City substitution: Pablo Zabaleta replaces Samir Nasri.
Blaszczykowski was afforded acres of space to attack down the right. He was found by Gundogan but mucked up his step over. It seems that Zabaleta needs to switch on quickly, or that could be punished next time.
Maicon crosses and there are plenty of City shirts in the area, but none can get on the end of it. The visitors are pushing slightly, but they're not exactly threatening.
Dortmund substitution: Robert Lewandowski replaces goalscorer Julian Schieber.
Lewandowski receives the ball with his back to goal and around 25 yards out. He takes it on the turn and has a go, but it's wild. Hummels had made one of his trademark marauding runs forward.
Maicon fails miserably in his attempt to clear Kirch's cross, and only succeeds in presenting Leitner with the ball on the edge of the area. However, the youngster makes a mess of his shot.
SAVE! Lewandowski bursts through the City back line and forces a great stop from Joe Hart at his near post!
Dortmund break forward with Perisic and Lewandowski. The pair play a one-two on the edge of the area, which gives the Pole a sight at goal. He delays a shot too long and the chance is wasted. City then counter, but Weidenfeller is alert to stop Aguero from equalising!
Dortmund substitution: Leonardo Bittencourt replaces Oliver Kirch.
Aguero pokes the ball through for Balotelli but the linesman has his flag up.
We're going to have three minutes of injury time.
Balotelli becomes the first man to be booked for a show of petulance. He stuck his elbow in Santana's face as he went up for a header and then slammed the ball into the ground when the referee blew his whistle.
Borussia Dortmund 1-0 Manchester City
Manchester City become the first English team not to win a single game in the group stage of the Champions League. It's a disappointing end to a disappointing campaign.