I've just come back from JNB on QF, but have also flown SAA.
SAA J is fine and I had no complaints about food, cabin or service.
Nevertheless, my preference is QF because:
I can start the trip in the Flounge with enough time for breakfast, champagne and a spa treatment.
My Opup success from J to F is outstanding (upgraded both ways last week) and even old cabin F on QF is a real treat
I can have a good enough sleep (helped by point above) on board the plane to be functional when I arrive
The arrival time works for me, as does the departure on the return (6.15pm)
Unless you really, really want to hang around the airport and wait for a connecting flight with the SAA option, I'd overnight, stay in Sandton (fast train or arrange a car), and go for a meal in Nelson Mandella Square (the Butcher Shop is fantastic if you are a carnivore and sells wine that goes for over $120 in Oz for around $40). There are plenty hotels of good quality at OK prices there. I stayed at the Radisson Blue last time and was very impressed.
If you're on more of a budget then the City Lodge, Lynwood is pretty good, cheap (around $100 per night), and in a safe little area with a number of nice restaurants within a minute or two walk.