Theo Hernandez scored the winning kick as Kylian Mbappe's France edged a tense Euro 2024 quarter-final clash with Portugal 5-3 on penalties after a goalless 120 minutes on Friday in what will likely be remembered as Cristiano Ronaldo's last-ever match at the tournament.

France were successful with all their penalties as they advance to a last-four showdown with Spain, while Portugal's Joao Felix was the only player to miss, sending his team's third kick against the post.

A Mikel Merino goal in the penultimate minute of extra time grabbed Spain a dramatic 2-1 win over Germany to keep their dreams of a record-breaking fourth European Championship title alive.

France eke into semis

It was overdue success in a shoot-out for France after they lost the 2022 World Cup final on penalties to Argentina and went out of the last Euros three years ago in the same way, against Switzerland in the last 16.

They also lost on penalties in the last major tournament in Germany, going down to Italy in the final of the 2006 World Cup.

Mbappe, who missed the crucial kick against the Swiss, was already off the pitch by the time this shoot-out came around, having been replaced by Bradley Barcola midway through extra time.

Barcola, Ousmane Dembele, Youssouf Fofana and Jules Kounde also scored from the spot for France.

Mbappe endured a frustrating evening as he continues to search for his best form in the competition but appears inhibited while wearing a mask to protect the nose he broke against Austria in France's opening game.

At least he will get another chance to star in the semi-final, while Ronaldo, at 39, appears to have played at a Euros for the last time.

This has been his sixth European Championship, but he failed to add to his tournament record tally of 14 goals in Germany after misfiring in all of Portugal's five matches.

He scored his penalty, Portugal's first, but Roberto Martinez's team go out having failed to find the net in over six hours of football.

They beat Slovenia on penalties in the last 16 after a goalless draw, but this time fell short in what was a disappointing game in Hamburg.

Neither of these teams had played anywhere close to their potential in their previous games at the tournament, but especially France, who have got this far without any of their players scoring a goal in open play.

The shoot-out unfolded at the Portugal end of the Volksparkstadion, with Mike Maignan not managing to make a save but not needing to.

Portugal's Diogo Costa saved three Slovenia penalties in the last round, but could not stop any this time.

Play

Spain break German hearts

After a fiery yet goalless first half, Spain's Dani Olmo latched onto an inch-perfect pass from 16-year-old Lamine Yamal to give La Roja the lead on 51 minutes.

Niclas Fuellkrug struck the post with 14 minutes remaining but with the hosts staring at an exit, Florian Wirtz slammed in a Joshua Kimmich knock-down in the 89th minute to take the game to extra time.

With the game looking set for penalties, Olmo lofted a cross for Merino, who headed Spain to victory and a semi-final meeting with either France or Portugal.

Germany's elimination ends the hosts' hopes of a fairytale Euros victory after a decade of poor performances at major tournaments, while also lowering the curtain on Toni Kroos' stellar career.

The battle between the two most successful Euros nations, with three titles apiece, was billed as a final come early, with the in-form Spaniards against Julian Nagelsmann's reborn hosts.

Spain nominated Kroos as Germany's most dangerous player pre-match but the midfielder had a huge, even if unintended impact early, colliding with Pedri, who was then substituted with a leg injury for Olmo.

Olmo gave Spain the lead six minutes into the second half, slicing through the sleepy Germany defence to perfectly place a Yamal pass past Manuel Neuer into the bottom left corner.

The goal kicked Germany into gear with Wirtz particularly dangerous.

With 10 minutes remaining Nagelsmann made his final substitution, bringing veteran Thomas Mueller from the bench.

But it was Wirtz – 13 years his junior - who made the difference, skimming a Kimmich header across the grass and in at the far post.

Germany appealed strongly for a penalty in the second period of extra time, after a Jamal Musiala shot hit Marc Cucurella's hand, but after a VAR check the original decision to not award a spot-kick stood.

Minutes later, Olmo curled in a cross for Merino, who leapt high to head the ball past Neuer and put Spain into the semi-finals.

Luis de la Fuente will be forced into changes for Tuesday's semi, after Dani Carvajal received his marching orders for hauling down Musiala for a second yellow card of the match.

Centre-back Robin Le Normand and captain Alvaro Morata will also be suspended for picking up yellows, with the Spain skipper earning a late caution for his celebrations in the aftermath of Merino's winner.

Play

Text inputs from AFP