In the Group B match played at National Stadium Karachi, Afghanistan, chasing a target of 316 runs, was bowled out for 208 in the 44th over.
For Afghanistan, Rahmat Shah was the top scorer with 90 runs. Rashid Khan and Azmatullah Omarzai scored 18 each, Ibrahim Zadran 17, Sediqullah Atal 16, Gulbadin Naib 13, Rahmanullah Gurbaz 10, Noor Ahmad 9, Mohammad Nabi 8, while captain Hashmatullah Shahidi was dismissed for 0.
For the Proteas, Kagiso Rabada took 3 wickets, Wiaan Mulder and Lungi Ngidi took 2 each, while Marco Jansen and Keshav Maharaj claimed 1 wicket each.
Earlier, South Africa, after winning the toss and opting to bat, posted 315/6 in 50 overs. Aiden Markram remained unbeaten on 52, while Wiaan Mulder was not out on 12.
Opener Ryan Rickelton played a brilliant knock of 103 runs. Captain Temba Bavuma scored 58, Rassie van der Dussen made 52, and David Miller contributed 14, while Marco Jansen was dismissed for a duck.
For Afghanistan, Mohammad Nabi took 2 wickets, while Fazalhaq Farooqi, Azmatullah Omarzai, and Noor Ahmad claimed 1 wicket each.