Borussia Dortmund secured top spot in Group D with a 1-1 draw against Anderlecht at Signal Iduna Park this evening.
Ciro Immobile put the hosts ahead just before the hour mark with an emphatic finish, but Anderlecht stayed in the game long enough to score a late equaliser when Aleksandar Mitrovic headed home late on.
Below, Sports Mole looks at who impressed as both sides finished their Group D campaigns with a point.
BORUSSIA DORTMUND
Goal
Mitchell Langerak: The Australian goalkeeper made on impressive stop to deny Mitrovic, but he was asked to do very little before picking the ball out of the net late on. (6/10)
Defence
Erik Durm: The full-back gave the ball away far too often when he was attempting to offer support for the attack, and he failed to close down the cross which led to the equaliser. (5/10)
Neven Subotic: Cleared every loose ball which threatened the Dortmund defence as the experienced centre-back avoided being dragged into a foot race with the lively Mitrovic. (6/10)
Matthias Ginter: Trusted to fill the void left by the injured Mats Hummels, and he looked comfortable for long spells after being caused early problems by Mitrovic. (6/10)
Marcel Schmelzer: Short of his best form in defence as he lacked the attacking threat which he usually carries from right-back. Removed before Anderlecht found the equaliser. (5/10)
Midfield
Nuri Sahin: Impressive on his first appearance for the club since May. Set up Immobile's goal with a clever pass, but was fortunate not to give away a penalty in the first half. (7/10)
Ilkay Gundogan: As the weeks pass, the German midfielder is slowly beginning to get back to his best following 14 months out with a back problem. Dropped deeper to dictate the tempo with his fine range of passing, but he struggled to get further forward. (6/10)
Kevin Grosskreutz: Asked to play in an unfamiliar role in the trio behind the striker, and he struggled to make an impact in the final third of the pitch. The night got worse when he moved back to defence as he allowed Mitrovic to find a yard to head home the equaliser. (4/10)
Shinji Kagawa: The Japanese linked up with his teammates impressively, but he wasted possession in the final third of the pitch. Missed a good chance early in the second half, too. (6/10)
Henrikh Mkhitaryan: Dortmund's liveliest player with his direct attacking play, and he probably deserved at least a goal. Unfortunately for the Armenian, Proto was in fine form to keep his efforts out. (7/10)
Attack
Ciro Immobile: The forward took his goal very well, but he was guilty of missing a number of other good chances. Frustrated his teammates by keeping the ball for too long on the edge of the box after the break. (6/10)
Substitutes
Oliver Kirch: Looked after the midfield well after coming on midway through the second half, but he struggled to dictate the tempo in the same way that Gundogan had done before him. (5/10)
Pierre-Emerick Aubameyang: Showed his skill in congested areas, but Dortmund didn't use his pace effectively when the game was stretched before the equaliser. (6/10)
Jakub Blaszczykowski: Sent on after the equaliser, but made little impact in the closing stages. (4/10)
ANDERLECHT
Goal
Silvio Proto: Brilliant goalkeeping performance. Immobile had to produce an emphatic finish to beat him on a night when the Anderlecht shot-stopper seemed to get his hand to everything. (8/10)
Defence
Anthony Vanden Borre: Energetic on the right throughout the evening, and he was finally rewarded late on as he provided the cross for Mitrovic's equaliser following a brilliant run. (7/10)
Chancel Mbemba: One of the heroes for the visitors. On a night when Dortmund dominated possession, the defender was up for the challenge ahead of him. The Congolese international made a number of vital tackles and interceptions to save his side. (8/10)
Olivier Deschacht: The experienced defender was the perfect partner for Mbemba as he cleaned up any danger in the box and organised the visiting back four impressively. (7/10)
Fabrice N'Sakala: Prevented from getting forward on a regular basis, but he tucked in alongside his defensive teammates to limit the space on offer to the hosts. (6/10)
Midfield
Leander Dendoncker: Forced to chase the ball for long periods of the match, but he stuck to his task impressively when the likes of Kagawa and Mkhitaryan found space around the box. (6/10)
Sacha Kljestan: The American should have handed his side the lead in the first half, and he tired as the match passed him by in midfield after the break. Removed with just over 20 minutes remaining. (6/10)
Ibrahima Conte: Lacked a cutting edge to his play in the final third of the pitch. Troubled the hosts with his pace on the ball, but he made the wrong decision on too many occasions. (6/10)
Dennis Praet: The 20-year-old was forced to curb his attacking instincts for much of the game, and he suffered a result. A willing runner when his side needed him, but he was unable to get on the ball on a regular basis. (5/10)
Frank Acheampong: Another player who looked lively on the ball, but he drifted in and out of the game as Dortmund dominated possession. (5/10)
Attack
Aleksandar Mitrovic: It looked like the striker missed his best chance in the first half, but he recovered well to provide his side with a valuable outlet. Took his second opportunity well to secure a point for the visitors. (7/10)
Substitutes
Youri Tielemans: A surprise omission from the starting lineup, but the 17-year-old looked comfortable coming off the bench as he kept the ball well in a congested midfield. (6/10)
Cyriac: Unable to get the touches he craved after being introduced with just over 10 minutes remaining. (5/10)
Michael Heylen: Sent on in the 89th minute and was prevented from making an impact. (4/10)