In a third change from the team that won the second match in Paarl by 104 runs, Test regular Temba Bavuma earned a second one-day cap – more than a year after scoring 113 against Ireland.
Hashim Amla, JP Duminy and Dwaine Pretorius were left out.
"It’s a great opportunity to get some fresh faces in," said captain Faf du Plessis.
"These are different conditions, so we have to start afresh and make the right decisions."
East London has traditionally been a venue where batsmen have to work hard for their runs on a slow pitch.
Du Plessis said Bavuma, who bats in the middle order in Tests, would open the batting as he had done in his only previous one-day international in Benoni in September 2016, while Test opener Markram was due to bat at number four.
Bangladesh were without opening batsman Tamim Iqbal, who has returned home after struggling with a thigh injury for most of the tour.
"We have to bowl well and restrict them," said Bangladesh captain Mashrafe Mortaza.
"In the last match we bowled pretty well but didn’t take wickets. It is a great opportunity for to perform as a group. It is important to finish strongly."
South Africa: Faf du Plessis (capt), Temba Bavuma, Quinton de Kock, Aiden Markram, AB de Villiers, Farhaan Behardien, Wiaan Mulder, Andile Phehlukwayo, Kagiso Rabada, Dane Paterson, Imran Tahir.
Bangladesh: Mashrafe Mortaza (capt), Imrul Kayes, Liton Das, Mushfiqur Rahim, Shakib Al Hasan, Mahmudullah, Sabbir Rahman, Soumya Sarkar, Mehedi Hasan, Taskin Ahmed, Rubel Hossain.
First Published: October 22, 2017, 2:02 PM IST