South Africa's two biggest cities serve different purposes for most travelers — Cape Town is the scenic, coastal city built for sightseeing, while Johannesburg is the country's economic hub and the place where its apartheid-era history is confronted most directly.
Cape Town's Table Mountain and Cape Point Nature Reserve make it one of the most dramatically situated cities on earth, mountains meeting ocean on nearly every side. Johannesburg is inland and flatter, with no natural landmark to compare — its major sights are historical and cultural rather than scenic.
Johannesburg's Apartheid Museum and Constitution Hill, alongside a visit to Soweto Township and the Mandela House museum, offer the country's most direct engagement with apartheid history. Cape Town has its own Apartheid Museum-adjacent sites and history, but Johannesburg, and specifically Soweto, remains the epicenter of that story.
Cape Town's Zeitz MOCAA (Museum of Contemporary Art Africa) is one of the largest contemporary African art museums in the world, and the colorful Bo-Kaap neighborhood adds distinct Cape Malay history. Johannesburg's Maropeng Visitor Centre, near the Cradle of Humankind fossil sites, adds a different, deep-history angle Cape Town doesn't have.
Johannesburg has South Africa's busiest international airport and is the natural gateway for most long-haul flights, plus the base for safari trips to nearby Kruger-area reserves. Cape Town has its own major airport and is generally considered the more relaxed, tourist-friendly city, with better beaches and a stronger wine-region day-trip network nearby.
Choose Cape Town for Table Mountain, wine country day trips, and South Africa's most scenic city. Choose Johannesburg for the country's essential apartheid history and easy access to safari lodges near Kruger. Most trips combine both — Johannesburg for history and a safari add-on, Cape Town for scenery and relaxation.