Manchester United found their winning groove in the Champions League yet again, as Real Madrid and Cristiano Ronaldo set new records in their regulation victory over FC Copenhagen.
Olympiakos and Bayer Leverkusen earned their tickets to the last 16 of Europe's premier competition, while Juventus and Galatasaray were made to wait with their match in Turkey abandoned due to snow.
Manchester City did an Arsenal in finding a way past the seemingly unstoppable Bayern Munich at the Allianz Arena. The 3-2 victory for Manuel Pellegrini's men, however, was not enough to see them top the group, with the defending champions going through as winners.
At Old Trafford, United had already sealed their place in the knockout stages courtesy that big victory over Leverkusen in the last round. However, top spot was still up for grabs along with the second-place position, which was between Leverkusen and Shakhtar Donetsk.
Phil Jones was the hero for United, scoring the only goal of the game against Shakhtar in the 67th minute. The utility man struck a volley home from 12 yards after the Ukrainian side failed to clear a Robin Van Persie corner.
The three points means United finish Group A as winners, and more importantly end their losing run at home, which was at two prior to the start of the Champions League game.
Leverkusen join the Premier League side in the last 16, after their own 1-0 win over Real Sociedad. The German side go through as runners-up with Omer Toprak's goal in the second half turning out to be the winner.
United finished with 14 points, with Leverkusen second on 10 and Shakhtar on eight points set to play in the Europa League. Sociedad finished rock bottom having picked up just a single point all season.
In Group B, Real Madrid asserted their authority, finishing unbeaten and setting records galore on the way. Cristiano Ronaldo scored his ninth goal of this season's Champions League campaign, with it setting a group phase goalscoring record, while Real set an all-time European mark by scoring in 31 consecutive matches.
The end result was a 2-0 victory over Copenhagen, with Real, already the group winners, set to know who will be joining them from Group B when Galatasaray and Juventus take the field on Wednesday.
The players were taken off by referee Pedro Proenca after 32 minutes following heavy snowfall. UEFA said in a statement the match will continue on Wednesday from 2pm CET (6.30pm IST).
There was drama in Group C, as Olympiakos scraped through to the next round at the expense of Benfica, who came from behind to beat Paris Saint-Germain (PSG).
Javier Saviola scored twice to help Olympiakos through in a stunning match against Anderlecht, which saw the Belgians reduced to eight men.
Olympiakos scored one goal from the penalty spot, but amazingly saw two saved by Anderlecht goalkeeper Silvio Proto, who was one of the players to be sent off along with Cheikhou Kouyate and Fabrice N'Sakala.
The win, however, proved to be vital as Benfica pulled off their own memorable 2-1 victory against PSG, looking to become the first French side to come away with a win from Lisbon.
Edinson Cavani put the French champions ahead, only for Rodrigo Lima and Nicolas Gaitan to score either side of the half to give the home side victory.
Benfica finished level on points with Olympiakos, but the latter go through owing to a better head-to-head record.
The two qualifiers from Group D had already been decided after Matchday 4, but top spot was still up for grabs. City were eager for revenge after a 3-1 footballing-lesson-defeat at the Etihad to Bayern, and the Premier League champs staged an incredible comeback from two goals down.
Thomas Muller and Mario Gotze put the German giants into a 2-0 lead after just 12 minutes with another thumping seemingly on the cards. However, David Silva pulled one back just before the half-hour mark, before James Milner won a penalty, finished off by Aleksandar Kolarov, and then netted the winner in the space of three second-half minutes to end Bayern's record 10-match winning run in the Champions League.
Results: Group A: Manchester United 1-0 Shakhtar Donetsk; Real Sociedad 0-1 Bayer Leverkusen. Group B: Real Madrid 2-0 FC Copenhagen; Galatasaray-Juventus [abandoned]. Group C: Benfica 2-1 PSG; Olympiakos 3-1 Anderlecht. Group D: Bayern Munich 2-3 Manchester City; Viktoria Plzen 2-1 CSKA Moscow.
Standings: Group A: Manchester United (14), Bayer Leverkusen (10), Shakhtar Donetsk (8), Real Sociedad (2).
Group B: Real Madrid (16), Juventus (6), Galatasaray (4), Copenhagen (4). The runners-up to be decided after the end of the Galatasaray-Juventus encounter which had to be abandoned.
Group C: PSG (13), Olympiakos (10), Benfica (10), Anderlecht (1).
Group D: Bayern Munich (15), Manchester City (15), Viktoria Plzen (3), CSKA Moscow (3).
Note: The top two from each group progress to the last 16, with the third-placed side moving to the Europa League.