Wales, who were beaten 3-1 by Belgium in their opening qualifier last week, were made to sweat by the Czech, waiting until the 81st minute for James to nod in the winner.
Tottenham forward Bale had the best of the first-half chances with a left-foot volley saved, but he turned provider for the Manchester United winger to get a rare header.
Elsewhere in Group E, Belgium thrashed Belarus 8-0 with six different goal scorers including a Leandro Trossard double.
Portugal survived a scare after going a goal down to win 3-1 away to Luxembourg with Diogo Jota, Cristiano Ronaldo and Joao Palhinha getting the goals.
Serbia won 2-1 in Azerbaijan in the other group game.
Turkey fluffed their bright to start qualifying by twice blowing a two-goal lead to draw 3-3 with Latvia in Istanbul.
The Turkish had beaten the Netherlands 4-2 in their opening game before a 3-0 win away to Norway.
The Dutch accounted for Gibraltar 7-0 on Tuesday, while Norway got a crucial 1-0 win in Montenegro thanks to Alexander Sorloth’s winner.
Croatia benefitted from some helpful refereeing as they won 3-0 over Malta after failing to score in the first hour, while Russia lost 2-1 in Slovakia.
