Brazilian-born striker Eduardo da Silva opened the scoring with a looping header and soon after a bizarre Gary Neville own goal put the game beyond England.
Croatia have not lost a competitive international at home for 16 years.
Croatia now have seven points from three games, the same as Israel. England have seven from four, as do Macedonia, who won
3-0 away to Andorra.
The top two from each group qualify automatically for the 2008 finals.
The game was played in front of 35,000 spectators amid tight security. No serious incidents were reported during the match.
The referee was Italian Roberto Rosetti.