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.
Nightwatchman Nathan Lyon was bowled by Morne Morkel and Brad Haddin departed in similar fashion at the hands of Dale Steyn, having added 40 alongside Steven Smith.
Mitchell Johnson’s breezy 27 came to an end when JP Duminy rearranged his stumps before Steven Smith fell caught behind to Morkel, one rush shy of a deserved fifty.
Ryan Harris and Peter Siddle produced a gusty last-wicket stand of 37 and that latter had South Africa 42 for two when Dean Elgar nicked behind to Haddin, Johnson having induced Graeme Smith to play on.
Amla teamed up with Faf 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 Australia had to wait until South Africa's overall lead was beyond 340 before claiming a fifth wicket - De Villiers for 29 as another victim Haddin, with Johnson the beneficiary on this occasion.
Quinton de Kock negotiated the final 10 overs of the day alongside Amla to leave South Africa firmly in the driving seat.