The highly fancied former winners, containing ex-Red Cristiano Ronaldo in his record sixth European finals, fell behind to the dogged Czechs after dominating the first half.
Diogo Dalot operated in an advanced right wing-back role while Bruno Fernandes was everywhere, going close with a deflected long-range shot, superbly creating a great chance for Ronaldo that was saved by Jindrich Stanek, and just failing to pick out Rafael Leao inside the box.
However, in driving rain in Leipzig, a splendid 62nd-minute strike into the far corner of the net by Lukas Provod, who got his shot away before Fernandes could charge it down, threatened an upset.