Scotland have no chance of reaching next year's finals in Brazil but the defeat severely dented Croatia's chances of finishing top of Group A and clinching an automatic berth in the 32-nation tournament.
The Croatians, who have 16 points from seven games, trail leaders Belgium who have 19 from seven after a 2-1 home win over Serbia.
Although the home team dominated proceedings, they created very few clear cut chances and were stung in the 26th minute when Snodgrass crept in to silence a patriotic crowd in Maksimir stadium.
"The result shows there is a heavy price to pay for anything less than a fully committed approach, even against a less talented side determined to get a result," coach Igor Stimac told Croatian television after the home fans jeered his team off the pitch.
"We wanted to start with as many creative players as possible but our crafty midfielders must understand that they have to play in both directions.
"Lack of defensive steel and fighting sprit on their part cost us dearly against an industrious five-man Scottish midfield and it's going to be an uphill battle now," he said.
Croatia started in an attacking 4-4-2 formation but Brazilian-born playmaker Sammir was ineffective, while wingers Ivan Rakitic and Ivan Perisic also struggled against the well-organised Scots who gave their rivals precious little room to operate.
Several thousand kilt-wearing Scotland fans were in raptures in the 26th minute after their team's rare raid into the opposition half paid handsome dividends, with Snodgrass poking the ball over keeper Stipe Pletikosa after a rebound from a defensive blunder fell kindly for him.
Sammir then blasted a shot from the edge of the penalty box well over the bar with McGregor helpless on the turf following a scrambled clearance in front of the advancing Mario Mandzukic, who was starved of service along with strike partner Ivica Olic.
Rakitic headed wide a teasing Darijo Srna cross from the right shortly before the halftime, when the home fans jeered Croatia's players into the dressing room.
Croatia came out purposefully in the second half and Olic's fierce shot from 20 metres sailed just over the bar before Perisic made way for former Arsenal striker Eduardo da Silva in the 56th minute.
Olic created a sitter for Mandzukic five minutes later, curling in a teasing cross which the Bayern Munich hitman sliced wide after he slid into the five-yard box.
Mandzukic drew applause from the home crowd shortly afterwards with an acrobatic overhead kick that sailed over the bar before McGregor rescued Scotland with a somewhat fortuitous save to deny central midfielder Mateo Kovacic from long range.
Stimac then threw caution to the wind as the home team's fourth striker Nikola Kalinic came on for left back Ivan Strinic but the 45-year-old coach's desperate attempt to salvage at least a draw backfired as Scotland held firm at the back.
"This was not in the script as we really didn't expect to drop points here against Scotland," Croatia defender Gordon Schildenfeld told Croatian television.
"We were completely disjointed in midfield and we also too many personal battles but we hope we can redeem ourselves for this slip-up in the remaining three matches."
Belgium moved three points clear at the top of the group with a hard-fought 2-1 win over Serbia.
The victory, which guaranteed the hosts at least second place in Group A, was secured with two headers, Kevin De Bruyne from a Jan Vertonghen cross in the 13th minute and Marouane Fellaini from a De Bruyne corner on the hour.
Serbia's Aleksandar Kolarov pulled a goal back with a direct free-kick in the 88th minute.
Much-fancied Belgium have not qualified for a major tournament in more than a decade but now lead the group by three points after Croatia's defeat.
- Sports & Recreation