The winners will meet Australia in the final at Mumbai on Sunday.
South Africa made two changes from the side that beat Pakistan in the last Group 'B' match, replacing batsman Boeta Dippenaar and paceman Charl Langeveldt with Loots Bosman and spinner Robin Peterson.
Defending champions West Indies also made two changes from the team that lost to England in the final Group 'A' clash as left-arm seamer Ian Bradshaw and Dwayne Smith took over from fast bowlers Corey Collymore and Fidel Edwards.
South Africa: Graeme Smith (capt), Loots Bosman, Mark Boucher, AB de Villiers, Herschelle Gibbs, Jacques Kallis, Justin Kemp, Andre Nel, Makhaya Ntini, Robin Peterson, Shaun Pollock.
West Indies: Brian Lara (capt), Ramnaresh Sarwan, Chris Gayle, Shivnarine Chanderpaul, Runako Morton, Dwayne Bravo, Dwayne Smith, Carlton Baugh, Ian Bradshaw, Jerome Taylor, Marlon Samuels.
Umpires: Simon Taufel (AUS) and Aleem Dar (PAK), TV umpire: Daryl Harper (AUS)
Match referee: Jeff Crowe (NZL)