Germany's Bastian Schweinsteiger scored the first goal and set up two more as his team beat Portugal 3-2 in their Euro 2008 quarter-final on Thursday.
Two goals in four minutes midway through the first half from Schweinsteiger and Miroslav Klose put them on top and captain Michael Ballack gave them a 3-1 lead just past the hour.
Nuno Gomes had pulled one back for the battling Portuguese just before halftime and substitute Helder Postiga put late pressure on the Germans when he made it 3-2 but they held on.
In the semi-final in Basel on Wednesday, Germany will meet the winners of Friday's match between Croatia and Turkey.
Two of Germany's goal came from Schweinsteiger's free kicks which exposed poor marking by the Portuguese and goalkeeper Ricardo's failings at dealing with high balls.
Germany struck first in the 22nd minute after a brilliant break down the left wing. Ballack sent Lukas Podolski away and he crossed low to the near post where Schweinsteiger got ahead of marker Paulo Ferreira and Ricardo to smash the ball home.
Four minutes later Armando Petit fouled Christoph Metzelder about 40 metres out. Schweinsteiger floated the free kick to the far post where Klose beat the offside trap to head past Ricardo.
Portugal, who had come close twice before the German opener, got back into the match five minutes before the interval when Deco began a counter-attack deep in Portuguese territory with a long ball forward to Simao.
Cristiano Ronaldo took Simao's pass but his shot was blocked by keeper Jens Lehmann only for the ball to run free for Nuno Gomes who swivelled and shot left-footed past the stranded keeper with the ball going in off Metzelder's outstretched leg.
Ballack increased Germany's lead just past the hour when Pepe gave away a free kick on the left which Schweinsteiger took and Ballack headed home past the badly positioned Ricardo after a little push from behind on Ferreira.
Postiga came off the bench to give Portugal hope when he headed powerfully past Lehmann in the 87th minute after winger Nani escaped Ballack on the left and provided a perfect cross.
The Portuguese threw everything at Germany in the closing stages but despite their best efforts could not find a way past a determined defence and the Germans were into the last four.