6월 27일, 스페인은 준결승전에서 체코를 크리스티아누 호날두의 막판 결승골로 제압한 포르투갈을 상대하였다. 이 경기는 예상외로 풀리지 않았고, 포르투갈이 수 차례 골찬스를 잡았다. 그러나, 스페인은 이 골찬스를 모두 무산시켰고, 경기는 연장전으로 이어졌다. 스페인은 연장전에서 기량을 회복하였으나, 연장 전후반 모두 득점에 실패하였다. 이 경기의 승자는 승부차기로 결정되었다. 앞서 프랑스와의 8강전에서 페널티킥을 성공시켰던 알론소의 킥은 포르투갈 골키퍼 후이 파트리시우의 선방에 막혔다. 포르투갈은 1회 성공의 리드를 가져갈 수 있었으나, 주앙 무티뉴의 킥도 카시야스의 멋진 다이빙에 막혔고, 0-0 균형이 유지되었다. 이니에스타는 스페인의 두번째 키커로 나와 성공하였다. 페페 또한 카시야스를 넘겨 킥을 성공시켰다. 수비수 제라르드 피케는 긴장하지 않고 후이 파트리시우를 상대로 페페의 킥과 비슷하게 성공시켰다. 수비수 브루누 알베스가 본래 포르투갈의 세번째 키커로 나설 예정이었으나, 미드필더 나니가 대신 차도록 하였고, 나니는 카시야스가 몸을 날린 방향과 반대인 왼쪽 구석으로 찼다. 세르히오 라모스는 네번째 키커로 나와 파넨카식으로 후이 파트리시우를 너머 치핑으로 페널티를 성공시켰다. 마침내 포르투갈 네번째 키커로 알베스가 나왔고, 알베스는 오른쪽 포스트를 강타하며 페널티를 실축하였다. 스페인의 마지막 키커인 파브레가스는 페널티를 왼쪽포스트 안쪽으로 삽입하였다. 결과는 스페인의 승리였고, 스페인은 1964년, 1980년, 2008년에 이어 UEFA 유럽 축구 선수권 대회 4번째 유로 결승 진출의 업적을 달성하였다.