Curwin Bosch booted 17 points to beat the Bulls and ensure the Sharks a home Currie Cup final.
The Sharks won 37-27 after leading 28-13 at halftime.
The home team was always in control of the semi-final in Durban and scored four tries in the first half to be in a commanding position.
The Sharks tries were scored by centre Lukhanyo Am, wing Kobus van Wyk, scrumhalf Louis Schreuder and lock Ruan Botha.
Bosch converted all the tries, added two penalties and also snapped over a drop goal.
The Bulls scored three tries and flyhalf Marnitz Boshoff converted all three and added to penalties.
The Sharks, who ended the league stages in first place, will play Western Province in the final.