Champions League results: Matchday six - Tuesday 7 December
The first half of Champions League matchday six took place across Europe on Tuesday night as the group stage draws to a close for half of the clubs in the competition.
This a full roundup of everything that transpired...
Group A
RB Leipzig 2-1 Man City
Manchester City rounded off their group stage campaign with a 2-1 loss away at RB Leipzig but still finished top of Group A and will be seeded in the last 16 draw.
Dominik Szoboszlai gave the home side the lead on the counter in the first half, swinging the tie in the hosts' favour against a City team with nothing to play for. Andre Silva grabbed a second for Leipzig with around 20 minutes remaining before Riyad Mahrez pulled one back soon after.
But the game was put beyond City's reach when Kyle Walker received a straight red card for a vicious kick to Silva's ankles, and Leipzig secured the points to ensure their place in the Europa League after Christmas.
You can read 90min's player ratings for the game here.
PSG 4-1 Club Brugge
PSG ended the group stage in style, thumping Club Brugge 4-1 at Parc des Princes.
Two early goals inside the first seven minutes from Kylian Mbappe ensured it was always going to be a comfortable night for the French giants, with Lionel Messi scoring just his fourth goal for the club to make it 3-0 by half-time.
Brugge were improved after the break and got one goal back through Mats Rits midway through the second half. But PSG were never really in proper danger and Messi restored the three-goal advantage with his second from the penalty spot with just under 15 minutes to go.
You can read 90min's player ratings for the game here.
Group B
Porto 1-3 Atletico Madrid
All the drama at the Estadio do Dragao was saved the second half.
It was 0-0 at half-time, but Antoine Griezmann put Atletico Madrid ahead 11 minutes after the restarter. Then came two flashpoints as each side had a man sent off within a few moments of each other - Yannick Carrasco for Atletico and Wendell for Porto, the latter only just on as a substitute.
Atletico sealed the win in stoppage time through Angel Correa and Rodrigo de Paul as Porto collapsed. But the hosts still managed an even later consolation through Sergio Oliveira.
This was a 'win and you're in' kind of situation for the knockout stage and Atletico took it.
AC Milan 1-2 Liverpool
Liverpool were assured of first place in Group B before kick-off against AC Milan at San Siro. But despite being under no pressure to get a result and fielding a heavily rotated side, Jurgen Klopp's side became the first ever English club to take maximum points in the group stage.
The Reds had to come from behind to do it after former Chelsea defender Fikayo Tomori gave Milan a lead inside the opening half hour.
That lead was soon erased when Mohamed Salah reacted quickest in the penalty area to pounce on a rebound, while Liverpool 'legend' - Klopp's words - got the winner soon after half-time.
The result ensures Milan's first Champions League season in seven years ends disappointingly early and without even the consolation of dropping into the Europa League.
You can read 90min's player ratings for the game here.
Group C
Ajax 4-2 Sporting CP
Ajax and Sporting CP shared six goals in Amsterdam, albeit not evenly, with the win seeing the former complete the group stage with six wins from six.
Sebastien Haller scored his 10th Champions League goal of the season from the penalty spot early on. Sporting did equalise through Nuno Santos not long after, but when Ajax went ahead again through Antony right before half-time, they never looked back.
Two goals in five second half minutes from David Neres and then Steven Berghuis took the Ajax lead to 4-1. Tabata pulled one back for 4-2, but a consolation was all it was.
Fortunately for Sportng, defeat didn't change anything and they follow Ajax into the last 16.
Borussia Dortmund 5-0 Besiktas
Borussia Dortmund's 3-1 defeat to Sporting on matchday five eliminated them. But with nothing to play for - having also already guaranteed third place - the Germans unleashed a thrashing on a Besiktas side who exit the competition without a single point.
Donyell Malen scored Dortmund's first and Besiktas were still in the game until Welinton was sent off in the closing stages of the first half.
Dortmund scored once more before the break from the penalty spot, before making that man advantage fully count in the second half and scoring three more. Erling Haaland made a cameo from the bench and still scored twice.
Group D
Shakhtar Donetsk 1-1 Sheriff
A 93rd minute equaliser from Sheriff ensured that they ended their debut Champions League group campaign with their heads held high and will drop into the Europa League with confidence.
Shakhtar were already resigned to finishing bottom of the group ahead of this match, but were playing for pride and were on course to win courtesy of a single Fernando goal just before the half-time interval.
Boban Nikolov stood up as Sheriff's hero at the death. They took four points in the two games against Shakhtar in this group and that has kept their European season alive.
Real Madrid 2-0 Inter
There was something to play for at the Bernabeu as victory for Inter would have seen them leapfrog Real Madrid and take a seeded place in the last 16 draw, As it was, the 13-time champions prevailed, meaning their only blip was the matchday shock against Sheriff.
Toni Kroos scored Real's opening goal within the first 20 minutes. Inter's task got vastly more challenging shortly after the hours mark when Nicolo Barella was sent off following an altercation with Eder Militao.
Real's advantage eventually came through just over 10 minutes from time when Marco Asensio unleashed a pearl of an effort that will be a contender for Champions League goal of the season.
You can read 90min's player ratings for the game here.
For more from Jamie Spencer, follow him on Twitter and Facebook!