Liverpool ended Milan’s hopes of reaching the last 16 of the Champions League with a 2-1 win at San Siro.
The Reds also became the first English side in history to win all six of their group games despite Jurgen Klopp rotating most of his key men.
The two sides played out a tense first half of the opening 45 minutes, and Milan took the lead with the first chance of any note after 29 minutes. Takumi Minamino failed to clear a corner at the near post, surprising Alisson and allowing Fikayo Tomori to poke home.
Divock Origi was rewarded with a start following his stoppage time winner against Wolves at the weekend, and came close to finding an equaliser with a snap-shot in the Milan box, but Mike Maignan was level to it.
And Liverpool were level soon after. Alex Oxlade-Chamberlain stung the palms of Maignan from distance, and Mohamed Salah was in hand to fire the rebound into the roof of the net.
Franck Kessie went down under a challenge from Kostas Tsimikas in the penalty area just after half time, but claims for a spot kick were dismissed.
The Reds took the lead for the first time on the night soon after. Tomori’s loose touch allowed Mane to take possession, forcing a save out of Maignan, only for Origi to head the loose ball into the far corner.
Rade Krunic curled an effort over the top as Milan looked to turn their fortunes around, while Origi headed wide from a Neco Williams cross at the other end.
Zlatan Ibrahimovic – who had one of the quietest games of his career – attempted an audacious overhead kick with five minutes remaining, but it was ultimately harmless.
Milan should have been level through Kessie moments later but Alisson stood his ground and the hosts were eliminated from the Champions League with a whimper.
Mike Maignan (GK) – 4/10 – Not particularly busy and you couldn’t really fault him for either goal, but a different goalkeeper might have held the initial shots he faced leading to them.
Pierre Kalulu (RB) – 6/10 – Given few problems by Mane. Replaced by a more attacking option in Florenzi.
Fikayo Tomori (CB) – 5/10 – Scored a pivotal goal and defended on the front foot – but his mistake was unforgivable.
Alessio Romagnoli (CB) – 6/10 – In the wars for his side but that wasn’t enough.
Theo Hernandez (LB) – 6/10 – Had some joy on the overlap, but not enough to make a real difference.
Junior Messias (RM) – 4/10 – Troubled Liverpool early on with his trickery but faded out of the game.
Sandro Tonali (CM) – 7/10 – Swept up and distributed the ball like a seasoned veteran. Subbed for fresher legs after an hour.
Franck Kessie (CM) – 2/10 – Early mistakes seemed to rattle him and force several further errors out of the Ivorian.
Rade Krunic (LM) – 4/10 – Played on the periphery and was mainly used as a dummy for Hernandez’s runs.
Brahim Diaz (AM) – 6/10 – Looked great whenever on the ball, but that wasn’t enough in a must-win game.
Zlatan Ibrahimovic (CF) – 2/10 – Definitely looked like a 40-year-old striker playing Champions League football. Way off the pace physically and technically.
Ismael Bennacer (CM, 59′ for Diaz) – 5/10 – Contributed little to the midfield battle.
Alexis Saelemaekers (RM, 59′ for Tonali) – 3/10 – Not a threat whatsoever.
Alessandro Florenzi (RB, 65′ for Kalulu) – 5/10 – Wasn’t an embarrassment but didn’t make anything happen either.
Tiemoue Bakayoko (CM, 83′ for Krunic) – 4/10
Alisson (GK) – 5/10 – Flustered by Minamino’s failed clearance. On another day he might have held the cross or stopped Tomori’s shot but not today.
Neco Williams (RB) – 6/10 – Got forward with a sense of adventure but was caught too high up a couple of times. Played the last half hour on the wing.
Nat Phillips (CB) – 8/10 – Covered well for Williams and was dominant in the air. A Premier League side should look to take him off Liverpool’s hands.
Ibrahima Konate (CB) – 7/10 – Better than his horror-show performance against Porto, if not quieter.
Kostas Tsimikas (LB) – 6/10 – Struggled to deal with Messias at first but eventually won the duel. Didn’t offer a lot going forward but it’s not his fault that he’s not Andy Robertson.
Tyler Morton (DM) – 7/10 – Looked a bit overawed at first (which is understandable) but grew into the game seamlessly, often doing well to evade Tonali and Kessie.
Alex Oxlade-Chamberlain (CM) – 8/10 – Sensational performance dictating play and driving forward from midfield. Played on the wing and as a centre forward later in the game.
Takumi Minamino (CM) – 4/10 – Shocking lapse of concentration for Milan’s opener. Definitely the weakest of Liverpool’s midfielders.
Mohamed Salah (RW) – 8/10 – Like against Porto, Salah played without a real sense of energy and yet still looked like the best player on the pitch. His finish was much tougher than it looks on first viewing.
Divock Origi (CF) – 7/10 – Dropped deep to try and make a difference, but was usually snuffed out by the time he got into a dangerous area. Quick instincts to react to Mane’s shot and put Liverpool in front.
Sadio Mane (LW) – 6/10 – Struggled to get involved and have a meaningful effect on the game until he stole the ball from Tomori early in the second half.
Naby Keita (CM, 64′ for Salah) – 6/10 – Was tidy but surprisingly not put under any real pressure by Milan.
Joe Gomez (RB, 64′ for Mane) – 6/10 – One of the easiest games he’ll ever be subbed into.
Fabinho (DM, 80′ for Origi) – 5/10
Max Woltman (CF, 90′ for Minamino) – N/A
Conor Bradley (CM), 90′ for Williams) – N/A