Both sides relied on kicking boots for most of the first period, with the Cheetahs holding a narrow 9-6 lead after 36 minutes.
But the visitors burst clear in the dying stages of the opening half, scoring two tries in the space of a couple of minutes.
Scrumhalf Sarel Pretorius pounced on a loose ball after it was fumbled by Sharks flanker Jacques Botes, and he dotted down for the first try of the match.
Two minutes later, winger Raymond Rhule stole away, running 30 metres down the left flank to score their second as the Cheetahs took a 21-6 lead at the interval.
In an effort to close the gap, the Sharks surged ahead immediately after the break, and flyhalf Riaan Viljoen carried a couple of Cheetahs players over the whitewash to score his side's first try of the game.
Eight minutes later, Cheetahs wing Nico Scheepers managed to stretch the advantage again as he dotted down to keep the pressure on the hosts.
Fighting back at the death, the Sharks brought themselves back into the match with winger Odwa Ndungane scoring a brace of tries within six minutes to take them within five points of the visitors.
Centre Meyer
Bosman, who also scored 14 points with the boot, added a bonus-point try
with four minutes left in the match to snatch the win.
Sharks: 15 Louis Ludik, 14 Odwa Ndungane, 13 Paul Jordaan, 12 Meyer Bosman, 11 Sbura Sithole, 10 Riaan Viljoen, 9 Charl McLeod, 8 Keegan Daniel, 7 Jean Deysel (captain), 6 Jacques Botes, 5 Anton Bresler, 4 Steven Sykes, 3 Wiehahn Herbst, 2 Monde Hadebe, 1 Dale Chadwick
Substitutes: 16 Pieter Dixon, 17 Julian Redelinghuys, 18 Jandre Marais, 19
Francois Kleinhans, 20 Cobus Reinach, 21 Marius Joubert, 22 Rosko
Specman
Free State Cheetahs: 15 Hennie Daniller, 14 Nico Scheepers, 13 Robert Ebersohn (captain), 12 Barry Geel, 11 Raymond Rhule, 10 Sias Ebersohn, 9 Sarel Pretorius, 8 Lucas Floors, 7 Pieter Labuschagne, 6 Frans Viljoen, 5 Izak van der Westhuizen, 4 Andries Ferreira, 3 Marcel van der Merwe, 2 Hercu Liebenberg, 1 Schalk van der Merwe
Substitutes: 16 Elandré Huggett, 17 Ross Geldenhuys, 18 Waltie Vermeulen, 19
Davon Raubenheimer, 20 Tewis de Bruyn, 21 Phillip Snyman, 22 Ryno
Benjamin