Tony de Zorzi and Tristan Stubbs put South Africa in command on 307-2 and left Bangladesh floundering after day one of the second and final Test in Chattogram on Tuesday.
Both men made their maiden Test hundreds in a second-wicket partnership of 201 after the visitors won the toss and chose to take first use of a good batting pitch as they eye a series sweep.
De Zorzi was unbeaten at stumps on 141, with 10 fours and three sixes, and will resume alongside David Bedingham on 18. Stubbs played a more conservative innings and hit the mark on his 194th ball by cutting Mominul Haque to the covers for a single. "To get to the three figures was a big relief, more than anything", Stubbs said, adding it "definitely ranks as my favourite hundred".
Taijul Islam was the only bowler to make a dent, first in the morning session by removing Aiden Markram when the stand-in skipper went for a big shot and holed out to Mominul Haque at mid-on for 33.