After a slow start Scotland grabbed a 28th minute lead as Norwich City forward Snodgrass, the goal-scorer in his side's 1-0 win in Zagreb in June, got on the end of Charlie Mulgrew's cross to power a header past Stipe Pletikosa.
Croatia, who secured of second place in the group, fired into the side netting through substitute Eduardo before Scotland added to their advantage after they were awarded a 73rd minute penalty. Barry Bannan's spot-kick was saved well by Pletikosa but Naismith, who was winning his 25th cap, followed up to fire the rebound into the bottom corner.
The win means Scotland leapfrog Wales, who drew 1-1 with group winners Belgium, into fourth place and secures manager Gordon Strachan's first win at Hampden Park.
Scotland manager Strachan, was happy to see his side pick up their first win at Hampden in over two years.
"It was a nice way to finish the week. It's been enjoyable but hard work and when you put that kind of hard work in it's always nice to get a performance and a win," Strachan said.
"It was a big difference from the first game against Wales but the players have gradually turned it around and they can be really proud of themselves."
Croatia coach Igor Stimac, whose side still secured a place in the play-offs, said he had offered his resignation to Davor Sukor, president of the Croatian Football Federation, immediately after the game.
"It is a bad defeat I have to say. I offered my resignation because of the latest results of the national team," said Stimac, who was part of the Croatia side that secured third place in the World Cup in France 1998.
"I need to show a moral responsibility and if there is anyone who doesn't believe in my work in Croatia I want to give them the chance to change something now."
Scots seek to avoid new low
Scotland, whose hopes of qualifying had long since disappeared, went into the match hoping to avoid finishing last in Group A and becoming the first Scotland side not to win a home match during a qualification campaign.
The home side survived a scare in the 23rd minute when a poor clearing header from Grant Hanley landed at the feet of Mario Mandzukic in the box but the Bayern Munich man dallied too much on the ball and Ikechi Anya poked the ball away to safety.
Minutes later Scotland took a surprise lead through Snodgrass. Mulgrew won possession on the halfway line and after receiving a return pass from Naismith sent in a cross that Snodgrass powerfully headed past Stipe Pletikosa after shrugging off the challenge of Dejan Lovren.
The hosts nearly doubled their lead in the 31st minute when captain Scott Brown released Snodgrass into the box with a perfectly weighted pass but the Norwich player saw his powerful low drive turned out on to the outside of the post by the fingertips of keeper Pletikosa.
Croatia tried to hit back before the break but Mandzukic could only send his volley bouncing into the ground and over the bar after being allowed space in the box.
The visitors brought on forward Eduardo in their hopes of an equaliser and the former Arsenal man came close in the 65th minute when he was sent clear on goal but he went too wide as he rounded keeper McGregor and fired into the side netting.
Scotland were awarded a penalty after Anya appeared to have his heels clipped by Domagoj Vida in the box. Bannan's spot-kick was saved by Pletikosa but the keeper could do nothing to stop Naismith firing in the rebound.