Spain and its fans celebrated as if they’d won the European Championship. After eliminating tournament host Germany in a thrilling quarterfinal, Spain has a great chance to lift the trophy in Berlin next week.
Spain snatched a 2-1 win in extra time on Friday thanks to substitute Mikel Merino's header in the 119th minute.
Extra time only came after Florian Wirtz’s equalizer in the last minute of regulation.
Dani Olmo, who set up Merino’s winner, netted the opener early in the second half.
"It was the game we expected," Merino said, "because we were facing one of the best teams in the world. This could have been a final, and it sure played out that way. This was a game between elite teams, a constant back and forth, and we showed that we have a great team."
Spain defender Dani Carvajal was sent off late in extra time for a second yellow card and will be suspended from Tuesday’s semifinal against Portugal or France. Fellow defender Robin le Normand will also miss that match after picking up another booking.
Germany players walked over to their fans morosely as coach Julian Nagelsmann looked on with his hands on hips and his face etched with disappointment.
"We were so close, that’s what makes it so bitter," Germany midfielder Toni Kroos said after the final match of his distinguished career. The 2014 World Cup winner earlier announced he was retiring when Germany's campaign ended.
"To be honest, right now the main feeling is that the tournament is over, because we all had a big goal that we wanted to achieve together," he said. "And this dream we all had has been simply shattered now."
The quarterfinal pitted the Euros' only three-time champions, the teams who have played the best soccer at Euro 2024, and it didn't disappoint.
There was a blistering pace from the start with crunching tackles and end-to-end action.
Kroos was lucky not to be booked for a mistimed challenge that upended Spain midfielder Pedri. Pedri suffered another hefty challenge moments later and left the field injured and in tears. He was replaced by Olmo in the eighth minute, the fastest replacement in Euros history.
From the resulting free kick, Lamine Yamal almost became the youngest ever goal-scorer at the tournament but the 16-year-old’s effort flashed past the right post.
Yamal did have a hand in the opener as he cut inside from the right and rolled the ball across for Olmo to hit it first time into the bottom left corner.
It was Yamal’s third assist of the tournament, the most by a teenager at a Euros.
Substitute Nico Füllkrug hit the post in a late desperate onslaught by Germany, which was rewarded just in the nick of time.
Joshua Kimmich nodded Maximilian Mittelstädt’s cross back to Wirtz, whose effort went in off the far post.
The teams had more chances to win in extra time before Merino leapt high to head in Olmo's cross and send the Spanish fans behind the goal into a frenzy.
"I am exhausted but so proud to see how we fought until the very end," Olmo said. "We hope that Pedri only has a knock because he is so important for the team. This is for him and for the entire team."