The visitors were without key man Duane Vermeulen and it showed. They were one-dimensional in attack and never looked threatening in the backs.
In contrast, the Highlanders have some lethal finishers who know where the tryline is and can sniff out a chance like a starving dog passing the mutton factory.
Big wingers Waisake Naholo and Patrick Osborne scored three tries between them and always looked dangerous. They wreaked havoc at times and the Highlanders know they can keep getting the ball wide and success will follow.
They will head into this week's bye in the top six and confident of more wins ahead. They face the Crusaders in Christchurch in two weeks' time.
The Highlanders led 24-7 at halftime and, when Osborne went over early in the second half to extend the lead, the game was as good as over.
Replacement flanker Dan Pryor scored near the end as the Stormers put up the white flag.
First five-eighths Lima Sopoaga impressed, as did flanker Elliot Dixon and lock Tom Franklin.
New flanker James Lentjes, who came straight out of club rugby, made a fine debut for the Highlanders, getting around the paddock and making plenty of tackles.
The game meandered along in the early stages as mistakes littered both teams.
Eventually the Stormers awoke and scored the first try when Schalk Burger, playing his 100th Super Rugby game, ran into a small hole and released skipper Juan De Jongh who ran 10m to score.
But the Stormers then dropped the kickoff and the Highlanders swung onto attack. They rumbled the ball up to the line and Aaron Smith darted off a breakdown and cheekily placed the ball beside the post for the five-pointer and then Naholo got in on the act.
From there the home side never looked back.
Highlanders 39 (W. Naholo 2, A. Smith, P. Osborne, D. Pryor tries; L. Sopoaga 4 cons, pen; M. Banks pen) Stormers 21 (J. De Jongh 2, M. Rhodes tries; K. Coleman 2, D. Catrakillis con) Halftime: 24-7.