Three red cards, on-field brawls, countless chances and a flurry of late goals. A wild, win-or-bust match in the Champions League between Porto and Atletico Madrid had it all. (More Football News)
In the end, it was Atletico celebrating a place in the last 16 of Europe's top club competition with a 3-1 win on Tuesday, emerging from a three-way fight for qualification in the final round of group games.
On a night when Ajax striker Sebastien Haller became an unlikely history-maker, Real Madrid finished top of its group, and Kylian Mbappe and Lionel Messi ran amok for Paris Saint-Germain, much of the focus on the next-to-last night of group play was on the Group B finale as three teams vied to be runner-up to Liverpool.
Porto started the night in second place, a point ahead of Atletico and AC Milan, which hosted Liverpool.
Milan wound up losing 2-1, meaning the winner of the all-Iberian match at the Estadio do Dragao would advance. It turned ugly, unsurprisingly given the stakes, with Porto having two players red-carded after Atletico had Yannick Carrasco sent off for swinging his arm around an opponent's neck.
Atletico was outplayed for much of the game but was opportunistic in front of goal, with Antoine Griezmann scoring the 56th-minute opener at a corner and both Angel Correa and Rodrigo De Paul adding breakaway goals after the 90th minute.
It sparked wild celebrations on the touchline by Atletico's famously passionate coach, Diego Simeone, and striker Luis Suarez, who was forced off injured after 13 minutes.
Porto earned the consolation of a third-place finish and a spot in the Europa League knockout playoffs.
With its victory, Liverpool became the first English team to win all six of its group games in a single Champions League campaign.
STROLL FOR PSG
Messi and Mbappe had some fun in PSG's group closer. It was anything but fun for Manchester City.
City manager Pep Guardiola selected a strong lineup for the 2-1 loss at Leipzig despite his team being guaranteed as the Group A winner and in the middle of a busy domestic schedule.
City was sloppy at the back in conceding goals to Dominik Szoboszlai and Andre Silva before having right back Kyle Walker sent off for a rash tackle from behind on Silva, meaning the team will be missing a key defender for the first leg of the last 16. Riyad Mahrez scored City's goal in a match played without fans because of coronavirus restrictions.
Leipzig finished third to stay in European competition.
It was a stroll for second-place PSG in a 4-1 win over Club Brugge, with Mbappe scoring twice inside the first seven minutes and -- at 22 years and 352 days -- becoming the youngest player to reach 30 goals in the competition.
Messi added his own double, the first a curler from outside the area and the second a penalty, and has now scored against a record-extending 38 different teams in the Champions League.
Haller's first season in the Champions League has been a historic one.
By converting an eighth-minute penalty for Ajax in its 4-2 win over Sporting, the Ivory Coast striker became only the second player -- after Cristiano Ronaldo in 2017-18 -- to score in all six matches of a single group stage. He finished with 10 goals in total.
It's quite the rise to prominence for Haller, who was sold to Ajax by West Ham in January 2020 because he was struggling to get in the English team. Then, after joining Ajax, the Dutch club accidentally omitted Haller's name when submitting its squad for the Europa League so he couldn't be registered for the competition.
Ajax was already sure of winning Group C and finished on a maximum 18 points. Sporting had already secured second place.
Indeed, with Borussia Dortmund certain of third place before its 5-0 thrashing of 10-man Besiktas, the last round of matches in the group didn't affect the standings.
REAL IN FIRST
In a match that determined which team finished top of Group D, Real Madrid beat Inter Milan 2-0 despite being without injured star striker Karim Benzema.
Toni Kroos and Marco Asensio, with a brilliant curler that flew in off the far post, scored the goals for the 13-time European champions.
Inter, which was already sure of a top-two finish, had Italy midfielder Nicolo Barella sent off for lashing out at Eder Militao.
In the other group game, Boban Nikolov scored a last-gasp equalizer for Sheriff to draw at last-place Shakhtar Donetsk 1-1.