If you are flying on British Airways, Lufthansa or KLM from London, Frankfurt (seasonal) or Amsterdam you can fly direct to Cape Town.
There are no direct flights from the USA to Cape Town; you will need to fly via Johannesburg. The same applies to flights from Perth and Sydney in Australia. Unfortunately there are no direct flights from Canada to South Africa - all flights go via Europe or the USA.
Most flights from other African countries fly to Johannesburg except for limited flights from Mauritius and Namibia that fly direct to Cape Town.