Ở vòng tứ kết, Đức đã có trận đấu không hề dễ dàng dù được đánh giá cao hơn Croatia. Tấm vé vào bán kết chỉ đến với Mannschaft khi đối thủ chơi thiếu người (Sammer ấn định tỉ số 2-1 cho "cỗ xe tăng" sau khi Stimac bị đuổi). Đối thủ chờ ĐT Đức tại vòng 4 đội mạnh nhất là chủ nhà, ĐT Anh.
Đúng như mong đợi, cuộc đối đầu giữa Anh và Đức đã diễn ra cực kì hấp dẫn và căng thẳng. "Tam sư" là đội bóng vượt lên dẫn trước nhờ pha lập công của Shearer, nhưng người Đức một lần nữa thể hiện bản lĩnh với bàn gỡ hòa 1-1 của Stefane Kuntz. Sau 90 phút bất phân thắng bại, hai đội tiếp tục thi đấu thêm 30 phút của 2 hiệp phụ nhưng đã không có bàn thắng nào được ghi để trận đấu buộc phải bước vào loạt luân lưu 11m đầy may rủi. Một lần nữa trong lịch sử, người Anh tỏ ra kém may mắn trên chấm 11m bởi sau khi hai bên đá thành công 5 loạt đầu tiên, đến loạt thứ 6 Stuart Pearce (HLV ĐT Olympic Anh hiện nay) đã đá trúng cột dọc, không bỏ lỡ cơ hội Moller đã sút thành công đưa ĐT Đức vào chơi trận chung kết.
Còn ĐT CH Séc, dù không được đánh giá cao nhưng họ chính là ngựa ô của giải đấu. Đầu tiên là chiến thắng 2-1 trước các nhà á quân thế giới Italia tại vòng đấu bảng, sau đó là loại Bồ Đào Nha 1-0 tại tứ kết với pha sục bóng rất kĩ thuật của tiền vệ Poborsky. Trong trận bán kết, may mắn đã đứng về phía Séc với chiến thắng trước ĐT Pháp trong loạt đá luân lưu.