i guess it depends on how much time you have. if you want to get from joburg to durban to cape town (and back to joburg to fly out of it ?) but dont have time to do / visit anything on the way, i would fly, to save time and to have more time in joburg, durban and cape town. if you have time to stop and visit on the way, i would rent a car. maybe for one part of the journey and fly another part. if you want to include a journey by train, you might want to have a look at the shosholoza meyl https://www.shosholozameyl.co.za/train-routes.html. but the train journey from joburg to durban is during the night, so you wont see much (and there is no train from durban to cape town).
for safari, the best location in south africa (and one of the best in the world imo) is krüger np. i would fly from cape town to nelspruit, rent a car and self-drive around krüger np, overnighting in a restcamp there. look at the sanp website for details http://www.sanparks.org/parks/kruger/camps/default.php#main. do make a reservation asap, as you are travelling in the busy south african holiday season. depending on how much time you have, return the car in nelspruit, and fly to joburg to fly back home. if you have more time, you might also drive back to joburg via the panorama route (but that makes sense only if you have at least 3 days in krüger plus 2 days to drive back to joburg).
if for some reason you dont want to go to krüger np, the "closest" to cape town good place for safari is addo elefant park near port elizabeth. its about 800km away from cape town, so still assuming that you dont have time to stop on the way, fly to pe, rent a car and self-drive in addo. again, book your accommodation asap if you want to stay in the park http://www.sanparks.org/parks/addo/tourism/accommodation.php.