Cristiano Ronaldo scored one goal and set up another as Portugal won their second successive match.
Portugal went ahead on eight minutes when Deco scrambled the ball past keeper Petr Cech at the second attempt.
The impressive Libor Sionko headed in from a corner to equalise but Ronaldo restored the lead with a low drive and then set up Ricardo Quaresma to tap in.
Turkey's last-gasp win over Switzerland in the late match confirmed Portugal qualification for the quarter-finals.
Portugal's victory continued the trend so far in the tournament of every game being won by the team that scored first.
And it was a deserved victory for a Portugal team that improved after the interval and overcame a Czech side that responded to their coach's demand for them to improve after their unconvincing win over Switzerland.
The Czechs started well, looking far more purposeful than they had on Saturday, with winger Sionko giving an early warning of his pace and trickery.
But it was Portugal who struck first when Deco scrambled the ball home at the second attempt after Cech had almost smothered it at his feet.
With both sides lining up with five men in midfield and each with a lone striker, the first goal might have killed the game - and no team had yet drawn level after falling behind in the tournament.
But the Czechs showed creditable resilience, as well as fluidity about their play, to claw their way back into the match.
And when the impressive Sionko, who had the beating of Paulo Ferreira all game long, won a corner after an excellent mazy run, the Czechs forced their equaliser.
From the set-piece, Sionko finished what he had started with a diving header that powered past keeper Ricardo.
Parity restored, the game entered a scrappy phase, with Portugal attempting to force the pace but a combative Czech back line standing firm.
As a result, it forced long-range efforts from Petit, Ronaldo and Deco but those that were on target caused Cech little trouble.
For the Czechs, Milan Baros threatened briefly to revive his excellent form of four years ago but generally he looked as potent as the sluggish Jan Koller, the man he had replaced in the starting line-up.
After the break, Portugal attempted to dictate the tempo but found their opponents in determined mood to get back in the game.
Sionko narrowly failed to find Baros with a cross as the Czechs pressed for an equaliser.
And as the game swung from end to end, Deco played in Simao but Cech was equal to his shot.
The next chance came the way of the Czechs, when Tomas Ujfalusi's flick-on somehow evaded Sionko and Baros at the far post.
But a minute later Portugal regained the lead when Ronaldo clipped in a low shot from just inside the box.
Still that did not end the Czechs' resistance and they were close to making it 2-2 when Sionko's header was tipped over the bar by Ricardo.
However, it was Portugal who had the final say when Ronaldo broke quickly and squared the ball for Quaresma to slide it into an empty net.
Portugal will now have even more of an incentive to go as far as possible in the tournament after coach Luiz Felipe Scolari was named as the new Chelsea manager during the Switzerland-Turkey match.
Czech Republic: Cech, Grygera, Ujfalusi, Rozehnal, Jankulovski, Galasek (Koller 73), Sionko, Matejovsky (Vlcek 68), Polak, Plasil (Jarolim 85), Baros.
Subs Not Used: Blazek, Zitka, Kovac, Fenin, Sverkos, Pospech, Kadlec, Sivok, Skacel.
Goals: Sionko 17.
Portugal: Ricardo, Bosingwa, Pepe, Carvalho, Ferreira, Petit, Joao Moutinho (Fernando Meira 74), Ronaldo, Deco, Simao (Quaresma 80), Nuno Gomes (Hugo Almeida 79).
Subs Not Used: Quim, Rui Patricio, Bruno Alves, Raul Meireles, Miguel, Jorge Ribeiro, Veloso, Nani, Postiga.
Goals: Deco 8, Ronaldo 63, Quaresma 90.
Ref: Kyros Vassaras (Greece).