Atlético Madrid snatched a place in the Champions League last 16 as they won 3-1 at Porto in a tense and ill-tempered game in which both sides had men sent off.
Antoine Griezmann put Atlético in front against the run of play in the 56th minute, bundling the ball into the net following a corner after the hosts had missed a glut of clear chances either side of the break. The lead was threatened when Yannick Carrasco was sent off in the 67th minute for raising his hands to Otávio as tempers raged following a foul but Porto’s numerical advantage lasted only a few moments as Wendell was dismissed for appearing to lightly strike Matheus Cunha with his elbow.
Substitute Ángel Correa clinched the win for Atlético with a cold-blooded finish on the counterattack in the 90th minute, before Rodrigo De Paul added a third goal 60 seconds later. Porto then earned a consolation penalty which Sérgio Oliveira converted with the final kick of the game.
Diego Simeone’s Atléti side began the game bottom of Group B but ended it second on seven points, Porto coming third with five and qualifying for the Europa League. Liverpool finished top with 18 points after winning 2-1 at Milan.
Real Madrid finished top of Group D as goals from Toni Kroos and Marco Asensio secured a 2-0 home win over Internazionale, who had Nicolò Barella sent off. Kroos struck in the 17th minute with a crisp low shot and although Inter had the upper hand in the opening half, Rodrygo went close to adding the second for Real when he hit the post just before the interval.
Barella fired over the bar shortly after the break and Luka Jovic had a shot from a tight angle parried by Samir Handanovic at the other end before Felix Brych showed Barella a straight red card in the 64th minute. The Italy midfielder retaliated after he rubbed shoulders with Rodrygo by the touchline and crashed into the panel boards, swinging his arm and leg at his rival while he was on the ground.
Inter were on the back foot and the substitute Asensio made it 2-0 in the 79th minute with a sublime effort from the edge of the penalty area, curling in a shot which crashed into the back of the net off the post. Both teams had already booked their last-16 places but Real ended on 15 points from six games, five more than second-placed Inter.
Sheriff Tiraspol avoided a fourth successive defeat when Boban Nikolov’s last-gasp strike earned them a 1-1 draw at Shakhtar Donetsk and a spot in the Europa League last 32. They looked to be heading towards another loss after Fernando’s opening goal three minutes before half-time, only for Nikolov to salvage a point three minutes into stoppage time with a shot from close range.
Sebastien Haller kept up his scoring streak to help Ajax match Liverpool and end the group stage with a 100% record as they beat Sporting 4-2 at the Johan Cruyff Arena. Haller became only the second player after Cristiano Ronaldo in 2017-18 to score in every game of the six-match group phase as he tucked away an eighth-minute penalty to take his tally in this year’s competition to 10. Sporting equalised through Nuno Santos but Antony restored the Dutch side’s lead just before half-time after a horror defensive error. David Neres and Steven Berghuis put Ajax out of sight before Bruno Tabata’s thunderous side-footed shot brought a consolation goal. Ajax topped Group C while the Portuguese champions, who had already been confirmed runners-up, finished with nine.
Borussia Dortmund’s Marco Reus and Erling Haaland each scored twice in a 5-0 win over Besiktas, with the Germans already confirmed in third place but bouncing back from a Bundesliga loss to Bayern Munich. Reus scored with a first-half stoppage time penalty and added another with a superb solo effort while Haaland headed in two more goals after coming on as a substitute, as Dortmund ended the campaign on a high and will continue in the Europa League. Besiktas finished last after losing all six group games.
Already-qualified Paris Saint-Germain finished the Champions League group stage in style as Kylian Mbappé and Lionel Messiscored two goals each in a 4-1 home win over Club Brugge. Mbappé put the Ligue 1 side 2-0 up in the first seven minutes and Messi added a third before the break plus a fourth with a penalty after the interval. PSG were guaranteed second place in Group A before kick-off while Manchester City, who lost 2-1 at RB Leipzig, had already secured top spot and finished with 12 points, one ahead of Mauricio Pochettino’s side. Brugge were eliminated from European competition after finishing bottom with four points, three behind Leipzig. Mbappé became the youngest player to reach 30 goals in the Champions League, less than two weeks before his 23rd birthday.