Manchester City secured the top spot in their Champions League group but had to do it the hard way, recovering from an early 1-0 deficit to win 2-1 against a spirited Hoffenheim side at the Etihad Stadium.
Gabriel Jesus and Nicolas Otámendi both hit the woodwork in the first half as Pep Guardiola's side reacted quickly after Andrej Kramaric's penalty strike. But the hosts needed some brilliance from an in-form Leroy Sané either side of half-time to ensure all three points.
Lyon drew with Shakhtar Donetsk in Group F's other fixture, meaning Lyon will join the Citizens in the competition's knockout rounds and Shakhtar will be playing UEFA Europa League football in the new year.
With all of that in mind, here's an extended look at the five best and worst performers from this affair at Eastlands:
#5 Flop: Aymeric Laporte
Plenty of questions were asked of John Stones, filling in at right-back for a less-than-100% Kyle Walker. But he gave a good account of himself, despite clearly not being comfortable there.
However, his usual centre-back partner Laporte struggled early on and committed a needless spot-kick after 15 minutes.
His tug on Benjamin Hubner was enough to convince the referee, and although you could argue Hubner was looking for it, the Frenchman gave him very little choice.
Starting alongside Nicolas Otamendi, who doesn't really strike confidence into his teammates given his defensive frailties, Laporte was lackluster against a game Hoffenheim side who were more than up for the challenge.
He ended the match as the only defender on either starting line-up not to register a single tackle or interception. He made one clearance and gave away a needless penalty in easily his worst performance of the season.
Laporte has been excellent this season but everyone has off-days, which is understandable. That being said, there can't be many more of these displays.
#4 Hit: Ilkay Gundogan
Ilkay Gundogan gets criticism aplenty because he's not consistent enough to justify starting in Guardiola's midfield trio alongside the dependable Fernandinho and David Silva. I'm guilty of criticizing him too sometimes, as I reminisce back to his days at Borussia Dortmund where he was a key creator and consistently excelled.
Since then, he's sustained two long-term injuries and has had to adapt his midfield role. And his performance yesterday, albeit not against the most difficult opponent, was very encouraging to watch.
With Foden and Bernardo Silva alongside him, Gundogan was able to orchestrate attacks from deep. Creating two key passes, his 91.9% pass accuracy should come as no surprise - he was constantly looking to get on the ball and play forward.
Registering 81 touches, his tally was only bettered by defensive pairing Otamendi and Laporte, who are both comfortable in possession themselves and love to build from the back.
Two dribbles, one tackle, two interceptions and a clearance completed: Gundgogan must use this momentum now to stake a starting berth claim.
#3 Flop: Dennis Geiger
Having made his recovery from injury last month, perhaps this one should be taken with a little empathy. But Dennis Geiger is a player with plenty of potential, and he didn't show it here.
The 20-year-old operated alongside Leonardo Bittencourt and Florian Grillitsch as part of a midfield trio, but stood out as their least effective player.
Bittencourt and Grillitsch both completed three tackles; Geiger only one. He also committed two fouls, didn't record another defensive action and was dispossessed twice in 62 minutes. Considering he only completed eight passes, those are difficult numbers to comprehend.
Geiger had a 50% pass accuracy, and only Joshua Brenet (9) had less than his 19 touches of the ball. He was replaced by another returnee in Nadiem Amiri, as coach Julian Nagelsmann didn't get the attacking impetus he needed to try and claw back into the game.
#2 Hit: Raheem Sterling
It was a bright display as usual from Sterling, who linked up well alongside Phil Foden in the first half and was unfortunate not to have created an assist before the break. It was his high press which forced a mistake in possession, as he won the ball high and teed up the teenager on the edge of the area.
Foden's eventual strike was blocked, but that move typified the pair's encouraging link-up play - something clearly worked on in training.
Sterling created Sané's second with a probing pass across to his left on a devastating counter-attack, but seriously should've had more than one assist here. He led the charge on another counter, this time before Leroy had pushed City in front - but Bernardo Silva failed to convert from close-range.
Four key passes, 88.9% pass accuracy, four dribbles and three tackles completed - it was an impressive showing after City's forgettable defeat away at Chelsea this past weekend.
#1 Hit: Leroy Sané
Who else? The silky German has been enjoying a rich vein of form and again proved pivotal as his side longed for a match-winner.
He stepped up to take a free-kick 30 yards out just before half-time. His side-footed effort, with precisely the right power and dip, simply flew into the bottom corner with aplomb.
Given his confidence levels, the effort itself shouldn't be much of a surprise. That said, he probably hasn't hit a sweeter strike than that since breaking through in the Schalke team all those years ago.
It's scary to think Sane is still only 22 years old. He continues getting better, evidenced by the unselfish nature with which he plays.
Achieving the right balance is important though, and he'll learn that with experience. He chose the wrong option for an extra pass into Silva's path - rather than shooting himself - following Sterling's blistering counter-attacking run.
He made no mistake to slot home minutes later though, with a deft penultimate touch that deceived an on-rushing Oliver Baumann. Sane then coolly dispatched his close-range effort and provided City all three points.
A game-high five key passes, three completed dribbles, 86.5% pass accuracy, two goals including a fantastic free-kick strike - City fans would hope that this run continues for a long time!