South African captain AB de Villiers won the toss and elected to bat in the third and final one-day international against Sri Lanka in Hambantota on Saturday.
Both teams are tied at 1-1 in the three-match series, after South Africa won the first match by 75 runs while Sri Lanka pulled off an 87-run win in the second game.
The hosts strengthened their spin attack by bringing left-armer Rangana Herath on for paceman Nuwan Kulasekara while South Africa replaced paceman Vernon Philander with Wayne Parnell.
The two teams play a two-Test series after the one-day games.
Sri Lanka: Angelo Mathews (capt), Kusal Perera, Lahiru Thirimanne, Tillakaratne Dilshan, Kumar Sangakkara, Mahela Jayawardene, Ashan Priyanjan, Sachithra Senanayake, Ajantha Mendis, Rangana Herath, Lasith Malinga.
South Africa: AB de Villiers (capt), Hashim Amla, Quinton de Kock, Jean-Paul Duminy, Imran Tahir, Jacques Kallis, Ryan Mclaren, David Miller, Morne Morkel, Wayne Parnell, Dale Steyn.
Umpires: Steve Davis (AUS), Ranmore Martinesz (SRI)
TV umpire: Nigel Llong (ENG)
Match referee: Jeff Crowe (NZL)