Scotland boss Gordon Strachan was forced to field an inexperienced team due to a host of injuries and his side were given little chance as they started the match bottom of Group A without a win, against a side that sit fourth in the world rankings.
But despite the Croatians dominating possession in the early stages it was Scotland who made the decisive breakthrough in the 26th minute when Norwich City midfielder Snodgrass volleyed past Stipe Pletikosa for his first competitive international goal.
Croatia piled on the pressure in the second half but the Scots held on to claim their first win in seven Group A matches and give former Celtic boss Strachan his first competitive victory in charge of the national team. The triumph lifts Scotland off the bottom of Group A above Macedonia and ends Croatia's undefeated record.
Scotland, who were without a host of regulars, took a surprise lead when Wigan Athletic midfielder Shaun Maloney embarked on a mazy run and the ball broke awkwardly off a defender and into the path of Snodgrass, who stretched to volley it home from ten yards out.
Strachan's side had a let off in the 37th minute when Grant Hanley's slack back-pass put Allan McGregor under pressure. The keeper's clearance was deflected by Mario Mandzukic to Sammir but the Brazilian-born Croatian volleyed high and wide of an open goal from 20 yards.
Croatia continued to press and Ivan Rakitic sent a glancing header just wide from a 40th minute free-kick. The home side missed a golden chance to equalise on the hour mark when Mandzukic slid in to get a touch on a cross at the back post, but the Bayern Munich striker's shot somehow went wide from a couple of yards out.
Sammir was next to threaten for Croatia as he sliced a shot wide from just outside the box before former Arsenal striker Eduardo sent a header straight into the arms of McGregor. McGregor sealed Scotland's surprise triumph late on when he made a good stop with his legs from a deflected Mateo Kovacic strike.