Substitute Zdenek Ondrasek grabbed the winner five minutes from time when he confidently fired past goalkeeper Jordan Pickford after Lukas Masopust burst down the right and picked him out.
Harry Kane had put England ahead with a penalty in the fifth minute after Raheem Sterling was brought down by Masopust.
But the Czechs drew level four minutes later when Jakub Brabec turned the ball home at the back post after the ball fell to him when Ondrey Celustka beat Michael Keane to a corner.
Pickford did well to tip over a dangerous dipping shot from Masopust on the hour but chances were rare until Ondrasek popped up inside the area to end England’s unbeaten qualifying run.
The result means the Czechs join group leaders England on 12 points with four wins, although they have played one game more.
Meanwhile, European champions Portugal and high-flying Ukraine edged closer to reaching next year’s Championship with comfortable home wins in qualifying Group ‘B’.
Ukraine sank Lithuania 2-0 to stay top of the group on 16 points from six games, followed by Portugal who are on 11 points from five matches after beating Luxembourg 3-0 with Cristiano Ronaldo among the scorers.
Third-placed Serbia have seven from five, Luxembourg have four points from six games and Lithuania are bottom with one point from six matches.
The Portuguese, who visit Ukraine on Monday, missed a string of chances to win by a bigger margin. Top scorer Ronaldo had been hoping to get two strikes to reach the milestone of 700 goals at club and international level.
Ronaldo’s one goal, the second for Portugal on the night, demonstrated his class when a defensive blunder allowed the Juventus forward to race clear and beat goalkeeper Anthony Moris with a delightful lob from the edge of the penalty area.