South African wicketkeeper Dane Vilas was forced to make a desperate dash to the ground, including a police escort from the airport, after being called up as a late replacement for the injured Quinton de Kock.
Stiaan van Zyl was the only wicket to fall for South Africa as he top-edged an attempted pull straight up in the air and was caught by wicketkeeper Jonny Bairstow off Stokes’ bowing for 21.
It ended a grafting opening partnership of 44 runs with Dean Elgar as the home side negated much of the early advantage that the overcast conditions and a green top offered to the seamers.
Elgar (28) and Hashim Amla on 15 were not out at lunch.
New South Africa captain AB de Villiers won the toss and elected to bat at the start in an effort to put pressure on the visitors, saying the decision was based on the batting form of his team from the second test in Newlands, where they fought valiantly to earn a draw after England had scored 626 runs in the first innings.
South Africa, who trail 1-0 in the four-match series, made two changes from the second test, including wicketkeeper Vilas’s bizarre last-minute rush.
Vilas arrived 40 minutes after the start after flying up from Port Elizabeth, where he had been due to play in a four-day provincial match. He got a police escort to speed his arrival at the ground after De Kock sustained a freak injury to his right knee on Wednesday.
“Quinton slipped and sprained his right knee at home late yesterday afternoon,” South Africa manager Mohammed Moosajee said on Thursday.
South Africa have also handed a debut to fast bowler Hardus Viljoen at the expense of spinner Dane Piedt.
England, who won the first test by 241 runs in Durban, were unchanged, even with several of the side still recovering from a stomach virus that swept through the squad in Cape Town.