Spain booked their place in the semi-finals of Euro 2024 with a dramatic 2-1 win against hosts Germany after extra-time.
Over 120 minutes were required to separate two of the tournament favourites, with La Roja just about edging the contest in Stuttgart.
A frantic and enthralling encounter saw 16 yellow cards and one red dished out on a sweltering Friday evening, while Toni Kroos’ illustrious career came to an end following his retirement at the end of Germany’s campaign.
Luis de la Fuente’s men will meet either Portugal or France in the semi-finals on Tuesday.
How the game unfolded
Spain found a sight of goal inside the first minute. Nico Williams’ ball inside to Alvaro Morata was teed up for Pedri, whose effort from the edge of the area was held by Manuel Neuer.
Lamine Yamal then saw his free-kick creep under the German wall but bend just past the outside of the post as La Roja’s early pressure continued.
Germany’s first chance came when Kai Havertz met a Joshua Kimmich cross, but his header went straight down the throat of goalkeeper Unai Simon.
Within two minutes of the restart, Spain should have gone in front. Williams’ floated cross was rolled back inside by Lamine Yamal for Morata, who swivelled and fired over from close range.
But with their next attack, Spain broke the deadlock. Morata dropped deep and spread play to Yamal, who again was able to play a low cross slowly, this time for Dani Olmo, and he made no mistake with a fine finish from 18 yards.
Germany began to panic and immediately started playing long to try and find a route to goal. Niclas Fullkrug set up Robert Andrich on the edge of the box and his shot stung the palms of Simon in their first meaningful attack after going behind.
The dogged Dani Carvajal then came up with a flying block to deny Havertz after Spain failed to take the ball off of Fullkrug’s toes.
Down the other end, Ferran Torres’ deep free-kick caused Neuer to scramble back across his line and prevent the ball from sneaking in at the far post.
Fullkrug was continuing to cause Spain serious problems and he rattled the post after reaching Florian Wirtz’s cutback, all the while wrestling with Carvajal.
Another Germany opening went begging when Simon’s poor kick was intercepted by Havertz, but his dink from 25 yards sailed over the top.
But after 89 minutes, the tournament hosts finally got one over the line. Maximilian Mittelstadt’s deep cross was nodded back by Joshua Kimmich to Wirtz, whose half volley cannoned in off the inside of the far post to send the game to extra-time.
Mikel Oyarzabal and Wirtz both fired inches wide in the first half of extra-time, before Germany wanted a penalty for handball against Cucurella shortly after play restarted, but referee Anthony Taylor was not moved.
Kimmich crossed for Fullkrug to nod on, and Simon had to be at full stretch to keep the ball from ending up in the net.
And in the final minute of extra-time, Spain stole the win back. A teasing cross from Olmo found Mikel Merino unmarked in the box, and his header left Neuer stranded.
Germany searched for one last shock and thought they had it when Fullkrug again headed wide, while Carvajal received a second yellow card for another spot of gamesmanship as Spain this time held on to advance.
GK: Unai Simon – 6/10 – Did his job whenever called into action by Germany’s direct attackers. Sometimes rushed trying to start counter attacks, which often led to the ball quickly coming back the other way.
RB: Dani Carvajal – 8/10 – A masterclass in the dark arts, here. Slowed play down, got under Germany’s skin and dug in deep when it mattered most. Out of the semi-final after receiving a red card.
CB: Robin Le Normand – 5/10 – Found it hard to keep Havertz under wraps and came off at half-time. Booked and will miss the semi-final.
CB: Aymeric Laporte – 7/10 – Unlike Le Normand wasn’t overawed by the occasion. Remained calm and collected even when Germany started going long.
LB: Marc Cucurella – 6/10 – Silenced Sane to the point he was hauled off at half-time. Given more bother by WIrtz and was beaten by Kimmich leading to Germany’s equaliser.
CM: Rodri – 7/10 – Had his pants pulled down (you know, metaphorically) by Musiala in the first half but aside from that had a nearly flawless game dictating play on and off the ball.
CM: Fabian Ruiz – 7/10 – Relinquished his box-crashing threat to Olmo after he was subbed on, but still managed to make an impact deeper in midfield, walking his German counterparts all over the shop.
CM: Pedri – N/A – Substituted with only eight minutes gone after sustaining an injury under a heavy challenge from Kroos.
RW: Lamine Yamal – 8/10 – I know we say this every week, but it is ludicrous for someone aged only 16 to be this good at football. Made a few runs down blind alleys in the first half but made an impactful difference prior to his substitution just after the hour mark.
CF: Alvaro Morata – 7/10 – Failed to ask questions of Germany in the first half before being the man to knot everything in Spain’s attack together in the second. Somehow picked up a booking off the pitch and is out of the semis.
LW: Nico Williams – 6/10 – It was breathless even watching Williams strut his stuff. Had Germany scampering but was less of a direct threat today.
Substitutes
SUB: Dani Olmo (8′ for Pedri) – 9/10 – There was much debate in Spain this week over whether Olmo should start over Pedri, and he answered the question resoundingly. Played high up almost alongside the striker at times and grabbed the all important two goal contributions.
SUB: Nacho Fernandez (46′ for Le Normand) – 6/10 – Made up for Le Normand’s lack of top-level experience but still lacked the height needed to repel Germany’s attacks.
SUB: Ferran Torres (63′ for Yamal) – 5/10
SUB: Mikel Oyarzabal (80′ for Morata) – 6/10
SUB: Mikel Merino (80′ for Williams) – 8/10
SUB: Joselu (102′ for Fabian) – 5/10
Subs not used: David Raya (GK), Alex Remiro (GK), Daniel Vivian, Jesus Navas, Alejandro Grimaldo, Martin Zubimendi, Alex Baena, Fermin Lopez, Ayoze Perez
Manager
Luis de la Fuente – 7/10 – Spain floundered to deal with Germany when they went long and tried to bully them, but they managed to regather themselves and chalk up a massively impressive win.
GK: Manuel Neuer – 6/10 – Powerless to stop Spain’s two goals, ultimately.
RB: Joshua Kimmich – 7/10 – Allowed Williams to sprint into space early on before adopting a more conservative approach. More useful in the attacking third, notably coming up with the assist for Wirtz’s equaliser.
CB: Antonio Rudiger – 5/10 – A strangely erratic and uneasy showing from the usually monstrous Rudiger.
CB: Jonathan Tah – 5/10 – Off the pace and just a fraction too slow to react to danger. Taken off late in the day for attacking reinforcements.
LB: David Raum – 4/10 – Given nightmares by Yamal before being mercifully told to stand down by Nagelsmann shortly after Spain went a goal up.
CM: Emre Can – 4/10 – Brought into midfield to provide energy and pace, but Spain were easily able to ghost past him. Nagelsmann atoned for his error by substituting Can after only 45 minutes.
CM: Toni Kroos – 5/10 – Forced into retirement after Germany’s tournament came to an end. Somehow initially escaped punishment for several fouls, including one which injured Pedri only two minutes into the game. Didn’t have his usual grip on a game.
RW: Leroy Sane – 4/10 – Couldn’t get into the game at all and was withdrawn at half-time as well.
AM: Ilkay Gundogan – 5/10 – Not for the first time this tournament, Germany’s captain was hooked as they went in search of goals by bringing another striker on.
LW: Jamal Musiala – 5/10 – Did well to carry the ball at points, though that was the extent of his use.
CF: Kai Havertz – 5/10 – Skewed a slew of half-chances without really going too close. Shown up by the busy Fullkrug after his introduction.
Substitutes
SUB: Robert Andrich (46′ for Can) – 6/10 – Injected Germany with the energy they required to compete.
SUB: Florian Wirtz (46′ for Sane) – 8/10 – Gave Germany everything that Sane didn’t. Nearly the hero with his fine equaliser.
SUB: Maximilian Mittelstadt (57′ for Raum) – 7/10 – A massive upgrade on Raum at left-back.
SUB: Niclas Fullkrug (57′ for Gundogan) – 8/10 – Changed the game with his physicality.
SUB: Thomas Muller (80′ for Tah) – 5/10
SUB: Waldemar Anton (91′ for Havertz) – 5/10
Subs not used: Oliver Baumann (GK), Marc-Andre ter Stegen (GK), Benjamin Henrichs, Nico Schlotterbeck, Robin Koch, Pascal Gross, Chris Fuhrich, Maximilian Beier, Deniz Undav
Manager
Julian Nagelsmann – 6/10 – Nearly snuck Germany into the last four by switching to 4-4-2. Unfortunately, they just weren’t the better team across 120 minutes.
Player of the match – Dani Olmo (Spain)
READ THE LATEST EURO 2024 NEWS, PREVIEWS & PLAYER RATINGS