Luis De la Fuente apostó por su once titular de confianza dando la titularidad a un Pedri que apenas duró ocho minutos en el campo después de una dura entrada de Toni Kroos que le obligó a marcharse lesionado. Alemania, por su parte, apostó por Emre Can en el centro del campo y Wirtz volvió a ser suplente en detrimento de Sané.
Salió bien España, que en el primer minuto ya pisó el área alemana con un disparo de Pedri que detuvo sin problemas Neuer. La selección quería imponer su juego, pero Alemania tenía claro el plan y no dejaba jugar los de De la Fuente.
Dani Olmo entró por Pedri y España empezó a encontrar espacios cada vez que el futbolista del Leipzig conseguía girarse, pero no terminaba de inquietar con peligro a Neuer. La ocasión más clara la tuvo Nico Williams, que aprovechó un buen balón filtrado para meterse en el área y obligar al guardameta a hacer una gran parada abajo.
Alemania también logró progresar en alguna ocasión, pero tampoco puso en excesivo peligro a Unai Simón. El único que lo consiguió fue Havertz con un cabezazo primero y un disparo desde la frontal después, ante los que respondió el portero del Athletic.
Ambos entrenadores movieron el banquillo tras el descanso. En España entró Nacho por un amonestado Le Normand y en Alemania lo hicieron Andrich y Wirtz por Can y Sané.
Pero fue España quien encontró la forma de abrir el marcador en los primeros minutos del segundo tiempo en una buena transición. Lamine Yamal piso área por el carril diestro y la puso en la frontal para la llegada de Dani Olmo que con un gran disparo batió a Neuer.
Se fue Alemania entonces al ataque y Nagelsmann lo puso todo en el campo con la entrada de Fullkrug por Gundogan pasando a jugar con dos delanteros. España empezó a encontrar más espacios a la espalda de la defensa alemana, pero el empuje alemán ponía en muchos problemas la salida de los de De la Fuente.
Tuvo Alemania el empate en las botas de Kai Havertz, que cazó un balón dentro del área tras una peinada de Fullkrug, pero el disparo del futbolista del Arsenal lo blocó a la perfección Carvajal apareciendo en el último instante. Minutos más tarde fue Fullkrug el que estrelló un balón en el poste tras un gran balón de Wirtz desde la derecha.
Luis De la Fuente decidió meter más músculo en el centro del campo en la recta final del partido dando entrada a Mikel Merino y Oyarzabal por Nico Williams y Morata. Y ahora ya sí Nagelsmann puso toda la artillería sacando a Muller por Tah, uno de los centrales.
Havertz volvió a tener el empate en sus botas tras un doble error de Unai Simón, pero no definió bien el delantero alemán.
Pero la gloria alemana estaba reservada para Florian Wirtz. El joven jugador del Bayer Leverkusen empató el partido en el minuto 89 aprovechando un balón muerto dentro del área después de que Kimmich salvara en la línea de fondo un centro de al segundo palo.
Le dio tiempo a Alemania, incluso, a tener una más, con un remate de Muller en el área pequeña que se fue por muy poco en la última acción del partido.
En la prórroga España volvió a hacerse con el control de la pelota y a dominar el partido. Alemania, bien plantada en defensa, buscaba robar y salir rápido, pero 'La Roja' tenía claro el plan y, comandada por un gran Rodri, no dejaba a los alemanes correr.
Poco peligro vimos en los primeros minutos, en los que solo Dani Olmo se asomó por el área alemana con una buena asistencia a Oyarzabal que se envenenó y a punto estuvo de sorprender a Neuer y un disparo desde la frontal que blocó la defensa alemana.
Mikel Oyarzabal tuvo la ocasión más clara de la primera parte de la prórroga con un disparo lejano que se marchó cerca de la portería de Neuer, y Wirtz respondió dos minutos después con un disparo desde la frontal que se fue rozando la cepa del poste.
Protestó mucho Alemania un posible penalti por manos de Cucurella en el inicio de la segunda parte de la prórroga que Anthony Taylor decidió no pitar.
Fullkrug tuvo una clarísima ocasión a falta de cuatro minutos del final con un remate de cabeza en plancha ganándole el duelo a Nacho, pero Unai Simón le negó el gol con una gran estirada.
Pero cuando todo parecía que se iba a la tanda de penaltis, España devolvió a Alemania el gol en los minutos finales. Dani Olmo agarró el balón en la izquierda, levantó la cabeza y la puso al corazón del área donde apareció Mikel Merino llegando desde atrás para rematar de cabeza y batir a Neuer. Era el minuto 119 y España se ponía por delante.
Solo quedaba el añadido, pero Alemania no se iba a dar por vencido e iba a tener hasta dos ocasiones para forzar los penaltis. Primero con un balón colgado que no acertó a rematar nadie y luego con un cabezazo de Fullkrug que se marchó rozando el poste de la portería de Unai Simón.
En la última jugada del partido Carvajal, que ya se perdía la semifinal por acumulación de amarillas, se marchó expulsado por una falta sobre Musiala.
España jugará el próximo martes la semifinal de la Eurocopa ante el ganador del Portugal - Francia.