Karim Benzema sent Real Madrid through to the last-16 of the Champions League on Wednesday alongside their rivals Atletico, while Inter Milan failed to make it through.
Real are Europe's most decorated club with 13 European Cups but they needed to beat Borussia Monchengladbach in Madrid to be sure of making it through the group stage of the Champions League for a 24th straight year.
Benzema was their hero, easing the pressure on manager Zinedine Zidane with two fine back-post headers in the first half securing a 2-0 win in a game played behind closed doors at the Alfredo di Stefano Stadium.
"Each match is a final and I think that if we always play how we did today, no team can hurt us," said Benzema, who has played in four Champions League final wins with Real in the last seven seasons.
The Frenchman also hit the bar in the second half and in the end it was a result that suited both teams, with a 0-0 draw between Inter Milan and Shakhtar Donetsk allowing Real to top Group B and Gladbach, former European Cup runners-up, to go through as runners-up.
Players from the German club gathered around smartphones and laptops after full time in Madrid to follow events in Milan, where a winner for either team would have knocked Gladbach out. They celebrated wildly when their qualification was confirmed.
"Moments like that live long in the memory. It was absolutely incredible and the joy was uncontainable," said Gladbach midfielder Christoph Kramer.
Shakhtar go into the Europa League while Inter finish bottom of their group, failing to reach the last 16 for a third season running.
Meanwhile Atletico needed to beat Red Bull Salzburg in Austria to qualify as runners-up in Group A behind Bayern Munich, and did so with Mario Hermoso and Yannick Carrasco scoring in a 2-0 victory.
"I think in the nine years we've been here, we have reached the last 16 eight times," said Atletico manager Diego Simeone.
"I enjoy looking back at that. Lots of people will say it's just normal for us but I don't think it's normal."
Salzburg now go into the Europa League while reigning European champions Bayern completed the group stage unbeaten as Niklas Suele and Eric Maxim Choupo-Moting gave them a 2-0 win over Lokomotiv Moscow.
The other team to clinch qualification on Wednesday was Atalanta, whose 1-0 win away to Ajax secured second place in Group D behind Liverpool and a last-16 spot for the second year running.
Luis Muriel scored a late winner for Atalanta in Amsterdam after Ryan Gravenberch was sent off for the hosts, who drop into the Europa League.
Already through, Liverpool were able to give a chance to several younger players in their 1-1 draw with Midtjylland in Denmark, where Mohamed Salah put the 2019 winners ahead early on but Alexander Scholz's penalty gave the hosts an honourable draw.
PSG had wrapped up their qualification for the last 16 on Tuesday thanks to Manchester United's defeat at RB Leipzig, despite their own game being suspended after an unprecedented walkout.
Both sets of players refused to continue after a row erupted over an alleged racist remark by the fourth official aimed at Basaksehir's assistant coach, Pierre Webo.
With a new set of officials, the game restarted in the 14th minute on Wednesday and an irresistible Neymar scored a hat-trick while also winning a penalty converted by Kylian Mbappe.
That was Mbappe's first Champions League goal in 12 months, and he scored again later on after Mehmet Topal pulled one back. With their 5-1 victory, PSG go through as group winners.
Pep Guardiola's Manchester City made it five wins and a draw in Group D as they eased to a 3-0 victory against Marseille with Ferran Torres and Sergio Aguero getting second-half goals before an Alvaro Gonzalez own goal.
Also already qualified, Porto beat Olympiakos 2-0 in Piraeus courtesy of Otavio's early penalty and a Matheus Uribe goal. The Greeks, who ended with 10 men, finish third in the section.
The draw for the last 16 is on Monday.