유로 2008의 결선 토너먼트는 이전 대회와 다르게 대진표가 짜여졌다. A조와 B조를 통과한 국가들은 C조와 D조를 통과한 국가들과 반대편 대진표로 올라가 결승에서 맞붙을 수 있게 되었다. 그에 따라, 같은 조에 속했던 두 국가는 종전에 결승전에서 재회했던 이전 대회들과 대조되게 준결승전에서 재회하는 구조로 되어 있었다. 대진표 변경은 결선 토너먼트에 참가하는 국가들의 휴식기를 균일하게 할 목적으로 진행되었다.[1] 또한, 유럽 선수권 대회 최초로 결선 토너먼트 7경기는 모두 두 경기장(바젤의 장크트 야코프-파르크와 빈의 에른스트-하펠-슈타디온으로 이 대회 8개 경기장 중 각 공동 개최국의 최대 규모 경기장)에서만 진행되었다.[1]유로 1984때부터 직전 대회인 유로 2004까지와 마찬가지로 3위 결정전은 진행되지 않았다.
또다른 규정 변화에 따라, 8강전까지 받은 경고는 준결승전에 돌입하면 초기화되도록 변경되었다. 그러나, 조별 리그에서 경고를 받은 선수가 8강전에서 또다시 경고를 받으면 경고 누적으로 준결승전을 결장해야 했지만, 결승전에 복귀할 수 있게 되었다. 따라서, 준결승전에서 퇴장만 당하지 않는 한 결승전에 출전할 수 있게 되었다.
8강전 첫 경기에서 A조 1위를 차지한 포르투갈이 B조를 2위로 마친 독일과 진검승부를 벌였다. 독일은 바스티안 슈바인슈타이거가 전반전이 반쯤 지나갔을 때 선제골을 기록했고, 뒤이어 미로슬라프 클로제가 4분 후에 머리로 추가골을 기록해 더 큰 점수차로 앞서나갔다. 전반 종료 5분을 앞두고, 포르투갈은 1골을 만회했지만, 독일은 60분경에 점수를 2골차로 다시 벌렸다. 승부를 원점으로 돌리기 위해 2골이 필요했던 포르투갈은 엘데르 포스티가의 만회골로 추격해 나갔지만, 독일은 경기 끝까지 앞서나갔고, 1996년 이래 처음으로 대회 준결승전에 진출했다.
2번째 8강전 경기는 크로아티아와 튀르키예 간 경기로, 앞선 경기보다 적은 골이 터졌다. 정규 시간을 득점 없이 0-0으로 마친 후, 크로아티아가 연장전이 29분 경과한 와중에 이반 클라스니치의 선제골로 앞서나갔다. 그러나, 연장전 추가시간 2분에 튀르키예는 프리킥 기회를 잡았다. 한편 로베르토 로세티 주심은 튀르키예의 프리킥을 선언한 후, 크로아티아의 수비를 보강할 교체 투입을 허용하지 않아 논란이 야기하기도 했다. 튀르키예의 뤼슈튀 레치베르 골키퍼가 길게 찬 프리킥은 문전 앞의 세미흐 셴튀르크의 위치에 낙하했고, 세미흐는 등지고 상단 구석의 골문을 흔들어 승부차기로 경기를 끌고 갔다. 크로아티아가 선축이었지만, 4명의 주자들 중 다리요 스르나만 골망을 갈랐고, 튀르키예는 3명의 주자가 모두 실수 없이 공을 넣어 3-1로 이겼다.
3전전승을 거두고 C조 1위를 차지한 네덜란드는 D조 2위의 러시아와 8강전 3경기에서 맞붙었다. 네덜란드 선수들은 할리드 불라루즈의 조산한 딸 아니사를 기리기 위해 검은 완장을 차고 출전했다. 러시아는 60분경에 로만 파블류첸코의 선제골로 앞서나갔다. 이후 86분에 뤼트 판 니스텔로이가 동점골을 넣었다. 90분에 류보시 미헬 주심은 러시아 수비수 데니스 콜로딘을 경고 누적으로 퇴장시키려 했으나, 판정을 번복했다. 판정 번복은 부심의 관찰에 따라 콜로딘의 저지 행위가 공이 나간 후에 진행한 것으로 판단한 데에서 야기되었다.[2] 독일 심판 위원회장 오이겐 슈트리겔은 판정 번복을 잘못된 전제로 판정을 번복했다고 되짚었다.[3] 11명의 선수로 경기를 속개한 러시아는 연장전 막판 8분에 속공으로 드미트리 토르빈스키와 안드레이 아르샤빈이 연속골을 기록해 역사적인 승리를 쟁취했다.
스페인과 이탈리아는 마지막 8강전 경기에서 결전을 벌였다. 양국은 120분 동안 1골도 넣지 못하면서, 승부차기로 돌입했다. 스페인은 승부차기에서 선축으로 앞의 4명의 주자들 중 3명이 성공했는데, 실축한 주자는 다니엘 귀사로 잔루이지 부폰의 선방에 막혔고, 한편 이케르 카시야스는 이탈리아의 주자 4명 중 2명을 막아냈다. 세스크 파브레가스는 마지막 주자로 나서 골망을 흔들며 스페인을 준결승전에 올려놓았다. 그가 골망을 흔들면서, 스페인은 1920년 하계 올림픽 이래 처음으로 주요 대회에서 이탈리아를 탈락시켰고, 또한 1984년 이래 처음으로 대회 준결승전에 진출했다.
준결승 1경기에서는 B조 2위이자 3회 우승국 독일과 A조 2위이자 첫 4강 진출국인 튀르키예가 박빙의 승부를 벌였다. 튀르키예는 골대를 맞고 튀어나온 공을 선제골로 연결했다. 4분 후, 바스티안 슈바인슈타이거가 독일의 동점골을 기록했다. 79분에 미로슬라프 클로제가 머리로 독일의 역전골이자 2번째 골을 마무리했다. 튀르키예는 그로부터 7분 후에 세미흐 셴튀르크가 옌스 레만을 넘겨 동점골을 차넣었다. 경기의 승부처는 필리프 람의 90분 결승골이 되었는데, 그의 골로 연장전 없이 승부를 냈고, 독일은 통산 6번재 유럽 선수권 대회 결승전에 진출했다. 중앙 중계국이 있는 오스트리아 빈의 격렬한 뇌우로 텔레비전 중계가 중단되기도 했다. 텔레비전은 몇몇 국가에서 3차례 전송이 중단되었는데, 이 중 클로제와 셰미흐의 득점 당시에는 중계가 제대로 되지 않았다. 결국 경기 후 녹화 내용은 중계권을 구입한 모든 국가에 제공해되었다.
준결승 2경기는 D조 1차전에서 맞붙었던 국가들의 재대결로, 스페인은 1984년 이래 처음으로 오른 준결승전에서 1988년에 소련 시절 이후로는 처음 준결승전에 오른 러시아를 상대했다. 전반전은 득점 없이 끝났지만, 후반전 시작 5분 만에 차비가 선제골을 기록했다. 69분에는 다니엘 귀사가 페르난도 토레스와 교체되어 들어갔고, 투입 4분 만에 스페인의 추가골을 기록했다. 다비드 실바는 스페인의 3번째 득점을 성공시켜 3-0 완승을 장식했고, 스페인은 통산 3번째 유럽 선수권 대회 결승전에 올랐다.