I suggest that to the extent possible you gradually modify your sleeping hours prior to departure. Ideally on the day before departure you might go to sleep by 7 pm and wake up no later than 3 am. This will be not too far from what your hours might be when you finally arrive in JNB. On the flight, eat the main meal then target 5 or 6 hours sleep shortly thereafter, waking up about 3 hours before landing in HKG. Try to enjoy the transit in HKG - you could even consider a quick trip into the city. Then on the second flight try to fully align sleeping hours with JNB time.
Also, I've found that the welcome champagne and one glass of wine with the meal doesn't impede my sleeping, but generally do stick to water after that.