Australia win by three wickets in a tense chase of 213 to book a date with the unbeaten hosts in Ahmedabad on Sunday.
After restricting the South Africans to 212 – despite David Miller’s defiant 101 – Australia eked their way to 215-7 to win with 16 balls to spare in a tense atmosphere inside Eden Gardens, Kolkata, on Thursday.
Travis Head (62) led Australia’s rollicking start before a mid-innings wobble put the five-time champions in a spot of bother.
South Africa did not let big partnerships bloom but Australia eventually reached the target with Steve Smith (30) and Jos Inglis (28) providing useful cameos.
Earlier, Temba Bavuma’s decision to bat under an overcast sky backfired and South Africa slumped to 24-4 inside 12 overs before light rain held up play.
Miller and Heinrich Klaasen (47) arrested the slide after play resumed with a 95-run partnership but Head’s double strike put Australia back in charge.
Miller smashed Cummins for a six to bring up his hundred but fell in the same over trying to clear the rope again.
India beat New Zealand in the first semifinal on Wednesday to book their place in the final in Ahmedabad on Sunday.
Australia will be bidding to win the 50-over World Cup for a record-extending sixth time, while host nation India are seeking a third title.
South Africa have never won a semifinal match at the World Cup in five attempts.