The pair crossed in the 53rd and 56th minutes after their side had been stunned by a fine comeback from the visitors, which saw them lead 17-14 by half time at Kings Park.
Marcell Coetzee also scored for the Sharks, while Frans Steyn kicked 16 points in another strong display at flyhalf with Jake White’s men holding on to book a last four meeting against the Crusaders in Christchurch next week.
They started the game well enough with a penalty inside the opening 120 seconds when lock Jarrad Hoeata was caught off-side at a ruck, allowing Steyn to slot over the first points.
The hosts had the first try after 14 minutes when they won an attacking line-out and drove forward powerfully allowing Coetzee to carry over from the driving maul.
Shortly after Jannie du Plessis had a try disallowed for a double movement as the Sharks took total control of the setpiece.
But the visitors hung in there and finally had their first points after 26 minutes when Lima Sopoaga landed a long-range penalty after Du Plessis was called for off-side by referee Steve Walsh.
After Steyn popped over another penalty when flanker Shane Christie was caught for some illegal play at the ruck, Malakai Fekitoa scored the game’s outstanding try when he pierced through a hole on the halfway line as he latched onto Ben Smith’s pass and escaped three tackles to score on the right.
Steyn struck the post with a penalty attempt three minutes from the break, before another seething Highlanders attack ended when All Blacks centre Fekitoa failed to release.
However, the home crowd was stunned into silence moments after the half-time siren when Kane Hames scored on the left following a an attack that started in his side’s own 22 metre area with Nasi Manu and Hoeata setting the big prop on his way.
That enabled the Highlanders to lead by four at the break, a lead that was extended to seven when Sopoaga landed another penalty after Willem Alberts entered a ruck from the side.
Moments before that Steyn did have the opportunity to cut the gap to one, but the Sharks opted to set up an attacking line-out that came to nothing.
But the game turned on its head during a three-minute spell thereafter when skipper Bismarck and Chavhanga both crossed, the former after the Highlanders’ set-piece was again torn to shreds and the latter sprinting over on the left for his first score of the season.
The plucky Otago side refused to give in, though, and they retook the lead through another blistering attacking move as Patrick Osbourne brilliantly offloaded to Phil Burleigh to score.
Sopoaga put the Highlanders in front again, before the Sharks emphatically turned over a scrum on the visitors’ goal-line moments after Jean Deysel knocked on, allowing Steyn to make it 28-27.
With the returning Patrick Lambie on the field after nearly four months out injured, the Sharks won another penalty right in front of the posts, allowing Steyn to kick over and seal the win.
Scorers: Sharks: Tries: Marcell Coetzee, Bismarck du Plessis, Tonderai Chavhanga.
Conversions: Francois Steyn (2). Penalties: Steyn (4).
Highlanders: Tries: Malakai Fekitoa, Kane Hames, Phil Burleigh.
Conversions: Lima Sopoaga (3). Penalties: Sopoaga (2).