Di semifinal, Spanyol akan menghadapi pemenang dari laga antara Portugal melawan Prancis yang berlangsung pada Sabtu dini hari pukul 02.00 WIB.
Jalannya pertandingan
Spanyol langsung memperlihatkan permainan agresif di awal laga. Mereka berhasil menciptakan peluang ketika laga baru berjalan satu menit.
Sebuah permainan operan cepat berakhir di kaki Alvaro Morata yang kemudian memantulkan bola ke Pedri.
Pedri lalu melepaskan tendangan di depan kotak penalti, yang masih lemah hingga bisa diamankan oleh Manuel Neuer.
Pada menit ke-7, Spanyol harus kehilangan Pedri yang harus ditarik keluar karena cedera usai ditekel keras Toni Kroos. Pedri terlihat menangis saat meninggalkan lapangan dan posisinya harus digantikan Dani Olmo.
Kroos sendiri tidak diganjar kartu oleh wasit Anthony Taylor. Keputusan itu diprotes oleh pelatih dan para pemain Spanyol.
Di menit ke-11 tembakan percobaan dari bek kiri Jerman David Raum masih mengarah tepat ke pelukan penjaga gawang Spanyol Unai Simon.
Pada menit ke-12 pergerakan Nico Williams yang diakhiri finishing mampu mengancam gawang Jerman. Namun tembakannya masih sedikit melenceng di sisi kanan gawang Jerman.
Pada menit ke-13, Spanyol menciptakan peluang lewat tendangan bebas Lamine Yamal. Sayang arah bola masih sedikit melenceng di sisi kiri tiang gawang Jerman.
Jerman membalas pada menit ke-21. Kai Havertz mendapat peluang saat bisa menanduk bola umpan silang dari sisi kanan. Namun, tandukannya masih mengarah tepat ke kiper Unai Simon.
Havertz kembali mengancam pertahanan Spanyol pada menit ke-35. Penyerang Arsenal itu menyambar umpan panjang Antonio Ruediger dengan tembakan mendatarnya, tetapi laju bola terlalu lemah hingga bisa diamankan Simon.
Kedua tim saling serang, tetapi tidak ada gol yang tercipta hingga babak pertama berakhir. Skor tetap 0-0.
Spanyol berhasil membuka keunggulan pada menit ke-51 berkat gol Dani Olmo. Proses gol berawal dari pergerakan Lamine Yamal di sisi kanan lalu merangsek ke kotak penalti sebelum memberikan umpan kepada Olmo yang langsung melepaskan tembakan ke sudut kanan gawang Jerman. Spanyol unggul 1-0 atas Jerman.
Pada menit ke-77, Jerman mendapatkan peluang terbaik lewat sepakan Fullkrug. Sayangnya sontekannya usai meneruskan umpan Florian Wirtz masih membentur tiang sebelah kiri gawang Spanyol.
Jerman nyaris mencetak gol pada menit ke-83,
Kai Havertz menggiring bola mendekati kotak penalti Spanyol dan melepaskan tembakan saat Unai Simon coba keluar dari sarangnya untuk menyapu bola.
Namun, tembakannya masih meluncur di atas mistar gawang Spanyol yang sudah ditinggalkan Simon.
Kemenangan Spanyol di depan mata harus sirna setelah Jerman secara dramatis mampu menyamakan skor menjadi 1-1 pada menit ke-89 lewat gol Florian Wirtz.
Wirtz mencetak gol lewat sontekan di kotak penalti usai meneruskan umpan sundulan Joshua Kimmich. Tendangan Wirtz sempat membentur tiang gawang sebelum menjadi gol.
Pertandingan babak kedua berakhir 1-1 dan lanjut ke babak perpanjangan waktu.
Di awal babak pertama perpanjangan waktu, kedua tim langsung mengambil inisiatif menyerang. Peluang pun didapat oleh kedua tim di awal-awal babak pertama extra time ini, tetapi belum bisa dikonversi menjadi gol.
Hingga babak pertama perpanjangan waktu berakhir tidak ada gol yang tercipta. Skor masih imbang 1-1.
Di awal babak kedua perpanjangan waktu, pemain Jerman meminta penalti setelah setelah tembakan Jamal Musiala mengenai tangan kiri Marc Cucurella di kotak penalti.
Namun, wasit Anthony Taylor tidak menganggap insiden itu sebagai penalti karena tangan Cucurella dianggap tidak aktif saat mengenai bola.
Pada menit ke-117, Jerman membuka peluang lewat sundulan Fullkrug. Namun sundulannya bisa ditepis Unai Simon.
Spanyol akhirnya berhasil kembali unggul 2-1 pada menit ke-119 lewat sundulan Mikel Merino usai meneruskan umpan lambung Dani Olmo. Spanyol unggul 2-1 atas Jerman.
Spanyol nyaris kembali mencetak gol pada menit ke-120. Ferran Torres yang tinggal berhadapan dengan Neuer melepaskan sebuah sontekan. Sayang bola masih melenceng dari gawang yang sudah kosong.
Pada menit ke-126, Spanyol harus bermain dengan 10 pemain setelah Dani Carvajal mendapatkan kartu kuning kedua setelah menarik Jamal Musiala untuk mencoba menghentikan serangan balik.
Hingga pertandingan berakhir tidak ada gol tambahan yang tercipta. Spanyol menang 2-1 atas Jerman.
Susunan pemain
Spanyol (4-2-3-1): Unai Simon; Marc Cucurella, Aymeric Laporte, Robin Le Normand (Nacho 46'), Dani Carvajal; Fabian Ruiz (Joselu 102'), Rodri; Nico Williams(Mikel Merino 80'), Pedri (Dani Olmo 7'), Lamine Yamal (Ferran Torres 63'); Alvaro Morata (Mikel Oyarzanal 80')
Jerman (4-2-3-1): Manuel Neuer; Joshua Kimmich, Antonio Rudiger, Jonathan Tah (Thomas Muller 80'), David Raum (Maximilian Mittelstadt 57'); Emre Can (Robert Andrich 46'), Toni Kroos; Jamal Musiala, Ilkay Gundogan (Nicklas Fullkrug 57'), Leroy Sane (Florian Wirtz 46'); Kai Havertz (Weldemar Anton 91')