Hashim Amla was in impressive form as South Africa maintained control of the second Test against Australia on day three at Port Elizabeth.
The Baggy Greens turned their overnight 112 for four into 263, before the hosts reached 192 for four in their second innings - building an overall lead of 369.
Amla, out for a duck in the first innings, underpinned the South Africa effort with an unbeaten 93.
It meant the hosts remained favourites to square the series, following a humbling 281-run reverse in the opener at Centurion.
Australia had added just eight to their overnight score when Warner departed for 70, caught by Graeme Smith off the bowling of Vernon Philander.
Nathan Lyon, who took five wickets in South Africa's first innings, was next to go. With the scoreboard reading 128 for five, he was bowled by Morne Morkel for 15 to be the sixth man to depart.
Brad Haddin offered a chance to Amla at gully during a stand of 40 with Steven Smith, which ended when Haddin was bowled for nine by Dale Steyn.
Smith and Mitchell Johnson then put on 37 for the eighth wicket before first Test hero Johnson was bowled by JP Duminy for 27.
Smith had moved to within one run of a half-century when he departed, caught by AB de Villiers off Morkel, an effort spanning 72 balls and containing eight boundaries.
The final wicket produced an entertaining 37 runs, with Ryan Harris contributing a run-a-ball 26 and Peter Siddle chipping in with an unbeaten 11.
However, their effort ended when Harris drove a thick edge to second slip, where Faf du Plessis accepted the chance. It meant the hosts had a 177-run advantage on the first innings scores.
Captain Smith had made 14 in an opening South Africa partnership of 20 with Dean Elgar when he was beaten for pace by a Johnson delivery, edging it onto his stumps.
It was 42 for two when Elgar edged a Siddle delivery to wicketkeeper Haddin and was on his way for 16.
Amla teamed up with Du Plessis in a stand of 70 for the third wicket, which ended when Haddin again provided the finishing touch to an edge off a Siddle delivery.
Amla, who lasted just two balls in the first innings, was offering much more resistance second time around and he was proving a source of frustration to the visitors' attack.
Australia had to wait until South Africa's overall lead was beyond 340 runs before they got their fifth wicket, when De Villiers departed for 29, caught by Haddin off Johnson.
The scoreboard was reading 167 then, and Amla and Quinton de Kock averted further problems in the remaining 10 overs of the day, adding 25 runs.
Amla closed on an unbeaten 93, which came from 126 balls and contained 12 fours.