France secured their spot in the Euro 2024 semi-finals by defeating Portugal 5-3 on penalties after a goalless 120 minutes, with Theo Hernandez scoring the decisive kick on Friday.
Spain also advanced in dramatic fashion, with Mikel Merino's late extra-time goal sealing a 2-1 victory over Germany.
France converted all their penalties to advance to a semi-final against Spain. Portugal's Joao Felix was the only player to miss, hitting the post with his team's third kick.
France's success in the shoot-out comes after losing the 2022 World Cup final on penalties to Argentina and exiting the last Euros three years ago in the round of 16 against Switzerland in the same manner.
They also lost the 2006 World Cup final on penalties to Italy.
Kylian Mbappe, who missed the decisive penalty against Switzerland, was substituted by Bradley Barcola midway through extra time. Barcola, Ousmane Dembele, Youssouf Fofana, and Jules Kounde also scored in the shoot-out for France.
"I am proud of my players. Even if we are not doing everything perfectly, we don't give up," said France coach Didier Deschamps. "Once again we are in the semi-finals. I will savour this a little even if we have another game coming up."
Mbappe had a frustrating evening, still seeking his best form in the competition while wearing a mask to protect the nose he broke in France's opening game against Austria. He will get another chance in the semi-final, while Ronaldo, at 39, likely played his last Euros match. This was Ronaldo's sixth European Championship, but he didn't add to his record 14 goals in the tournament, failing to score in Portugal's five matches.
Ronaldo scored his penalty, Portugal's first, but Roberto Martinez's team exited the tournament without scoring in over six hours of play. They had previously beaten Slovenia on penalties in the last 16 after a goalless draw, but fell short in Hamburg.
"In the same way that it was maybe cruel for Slovenia in the last 16, today it was cruel for us. That's football," Bernardo Silva told CNN.
Both teams underperformed in their previous games, especially France, who reached this stage without any player scoring a goal in open play. Randal Kolo Muani and Eduardo Camavinga joined the France line-up, with Antoine Griezmann positioned as a number 10 behind the attackers.
France relied on strong defence and struggled to play with intensity in possession. They had less ball control in a match that briefly came alive in the second half. Portugal created chances with Bruno Fernandes and Vitinha testing France's goalkeeper Mike Maignan, who prevented Ronaldo from scoring with a back-heel attempt.
France's Kolo Muani saw a goal attempt blocked by Ruben Dias. Deschamps replaced Griezmann with Dembele, who set up a chance for Camavinga that went wide. The match drifted into extra time, where Ronaldo missed a good opportunity from Francisco Conceicao's cutback.
Mbappe watched the end of extra time from the bench, as Maignan denied Nuno Mendes at the end of 120 minutes, leading to the penalty shoot-out. The shoot-out took place at the Portugal end of the Volksparkstadion, with Maignan not needing to make a save. Portugal's Diogo Costa, who saved three Slovenia penalties in the last round, couldn't stop any of France's attempts this time.
In the other quarter-final, Mikel Merino's goal in the penultimate minute of extra time secured Spain a dramatic 2-1 win over Germany, sending them to the Euro 2024 semi-finals and keeping their hopes for a record-breaking fourth European Championship alive.
After a goalless first half, Spain's Dani Olmo scored in the 51st minute from a pass by 16-year-old Lamine Yamal. Germany's Niclas Fuellkrug hit the post with 14 minutes left, and Florian Wirtz equalised in the 89th minute, taking the game to extra time.
With penalties looming, Olmo crossed to Merino, who headed in the winning goal. "Well, I'm dead, really. The adrenaline is taking its toll on me now. It has been a special moment," Merino said.
Germany's elimination ends their hopes of a fairytale Euros victory and marks the end of Toni Kroos' career. "We played a good tournament but when you're so close, to be eliminated like that, it's bitter," Kroos told ARD.
Spain struggled with Germany's speed during the first half, but Olmo broke through six minutes into the second half, scoring from Yamal's pass. Wirtz then equalized for Germany just before the end of regular time.
In extra time, both teams had chances, but it was Merino's header from Olmo's cross that decided the match. Spain will face either France or Portugal in the semi-finals. Spain will have to make changes for the semi-final as Dani Carvajal, Robin Le Normand, and captain Alvaro Morata will be suspended due to yellow cards.
(With inputs from agencies)