The knockout phase was different from that of past tournaments. Teams in groups A and B were separated from teams in groups C and D until the final. This increased the chance of a group fixture being replayed in the knockout phase, and rendered a final between two teams drawn in the same half of the tournament impossible. The reason for the format change this year was to equalise the rest periods during the knockout phase. Also, in another major change, for the first time in a European Championship, only two venues (St. Jakob-Park, Basel and Ernst Happel Stadion, Vienna) were used for the seven matches in the knockout phase of the tournament.
Another new rule forgave all single yellow cards received up to and including the quarter-finals. However, players that were booked both in group tournament and quarter-finals missed semi-finals through suspension, but could play in the final. It was thus not possible to be suspended for the final without a red card.
The first quarter-final saw Group A winners Portugal take on Germany, who finished as runners-up of Group B. Germany's Bastian Schweinsteiger scored the opener half-way through the first half, before Miroslav Klose doubled their lead four minutes later. Portugal pulled one back five minutes before half-time, but Germany restored their two-goal lead on the hour mark. Portugal now needed two goals to take the game to extra time; Hélder Postiga pulled one back, but Germany were able to hang on to qualify for the semi-finals for the first time since 1996.
The second quarter-final was between Croatia and Turkey, and was a less high scoring affair. No goals were scored in normal time, and it took 29 minutes of extra time before Ivan Klasnić put Croatia into the lead. However, two minutes into injury time at the end of extra time Turkey was awarded a free kick. Controversially referee Roberto Rosetti did not allow the Croatian coach to put on a substitute, after Turkey was awarded the free kick, which would have allowed for the Croatian defence to better settle. A long free kick from Turkey goalkeeper Rüştü Reçber found Semih Şentürk on the edge of the area; the striker turned and hit a shot into the top corner of the net to take the game to a penalty shootout. Croatia went first, but only managed to score one of their four penalties, while Turkey scored all three of theirs to win 3–1.
The Group C winners, the Netherlands, who had won all three of their group games, took on Group D runners-up Russia in quarter-final 3. The Netherlands' players wore black armbands in sympathy for the death of Anissa, Khalid Boulahrouz's premature baby daughter. Russia took the lead through Roman Pavlyuchenko just before the hour mark. Ruud van Nistelrooy equalised in the 86th minute. In the 90th minute, Ľuboš Micheľ sent the Russian defender Denis Kolodin off the field for his second yellow card, but reversed his decision. The reversal was based on a linesman's (mistaken) observation that the ball was out of play before the tackle. Eugen Strigel, head of the German referee committee, later judged the reversal against regulations as well as based on a mistaken premise. The Russians played on with 11 players and with two quick-fire goals in the last eight minutes of extra time from Dmitri Torbinski and Andrei Arshavin secured a remarkable win.
The final quarter-final pitted Spain against Italy. With such big names on show, fans might have expected an exciting match. However, in 120 minutes of football, neither team managed to produce a goal, sending the game to penalties. Spain went first and scored three of their first four penalties, Gianluigi Buffon saving the other from Dani Güiza, while Iker Casillas saved two of Italy's four penalties. This left Cesc Fàbregas having to score to send Spain through. He converted, meaning that Spain had won their first competitive match against Italy since the 1920 Summer Olympics and that Spain had qualified for the semi-finals for the first time since 1984.
The first semi-final saw Group B runner-up and three-time champions Germany face Group A runner-up and first time semi-finalists Turkey. Turkey scored first as Uğur Boral converted a rebound from the crossbar. Schweinsteiger and Germany equalised four minutes later. In the 79th minute Klose headed Germany into the lead with his second goal of the tournament. Turkey managed to get back seven minutes later when Semih flicked the ball past Lehmann. The match was headed for extra time when defender Philipp Lahm in the 90th minute scored the final goal and sent Germany into their sixth European Championship final. The TV broadcast of the match experienced technical difficulties caused by severe thunderstorms in Vienna, Austria, from where the television broadcast was transmitted. Television pictures in several countries were interrupted on three occasions, including at the time of Klose and Semih's goals. The entire match was recorded and distributed to all countries.
The second semi-final was a replay of the opening match of Group D, Spain in their first semi-final since 1984 faced Russia who had not been in a semi-final since 1988 as the Soviet Union. The first half was scoreless, but five minutes into the second half Xavi opened the scoring. Güiza replaced Torres in the 69th minute and four minutes later he had scored the second goal for Spain. David Silva rounded up the scoring with Spain's third of the night, sending Spain into their third European Championship final.