Temba Bavuma has made 93 and the South Africa tailenders added valuable runs to help them post 367 all out in their first innings in the opening Test against Bangladesh at Kingsmead.
Bangladesh had reached 1-25 in reply by tea on the second day after Shadman Islam was bowled by spinner Simon Harmer for nine to end the second session. Mahmudul Hasan Joy was still there, 16 not out.
Bavuma had completed his 18th Test half-century on the first day but has still only got one Test hundred to his name, back in 2016.
He fell seven runs short this time on Friday when he was bowled by spinner Mehidy Hasan Miraz, who took 3-94.
Bavuma's innings still helped push South Africa to a solid first-innings total after being put in to bat by Bangladesh.
They had been 4-233 overnight and lost four wickets in Friday's first session.
Bavuma had built a half-century partnership with Kyle Verreynne (28) on the first day and another with Keshav Maharaj (19) on Day 2.
Verreynne and Wiaan Mulder fell off successive balls to pace bowler Khaled Ahmed, who had figures of 4-92 to lead Bangladesh's bowling effort.
Bavuma and Maharaj also were dismissed in the space of two balls.
But Harmer, who is playing his first Test since 2015, made 38 not out and was the anchor as South Africa's last two wickets put on 69 runs. He hit four fours and a six.
Australian Associated Press