The Highlanders had dropped six players, including All Black Josh Ioane, for the match after they breached team protocols last weekend.
Sione Misiloi, Daniel Lienert-Brown, Marino Mikaele-Tu'u, Teariki Ben-Nicholas and Patelesio Tomkinson joined fullback Ioane on the sidelines.
The win came after last week's 30-19 loss to the Hurricanes, and means the Highlanders move off the bottom of the standings and into third place with only their second win so far this season.
The Crusaders, who still lead the standings after five games, went into the match off the back a bye week and failed to click throughout the 80 minutes.
Two successful penalties from Hunt gave the visitors a 6-0 lead inside the first 19 minutes, with Harmon adding a try six minutes later. Pari Pari Parkinson was stopped just short of the try line but halfback Folau Fakatava moved the ball wide for Harmon to drive over.
Hunt continued to rack up the points with a conversion and another penalty as Tony Brown's side took a commanding lead only for the Crusaders to edge their way back into the game in the dying moments of the half.
With the hooter having sounded for the completion of the first 40 minutes, the Crusaders kept the ball alive until Codie Taylor smuggled his way over the line to reduce the deficit to 16-7 at the break.
The Crusaders were lifted by Taylor's try, but dogged defensive work by the Highlanders kept them at bay.
The Highlanders gained some breathing space when Hunt added his fourth penalty and centre Collins scored his try 22 minutes from time after a Will Jordan mis-kick gifted possession to the visitors close to the Crusaders' line.
David Havili reduced the deficit 11 minutes from time for the Crusaders but, with Richie Mo'unga missing the conversion, Canterbury's hopes of a comeback fizzled out and Garden-Bachop's late try sealed the Highlanders' win.