England took a 2-0 lead in the five-match one-day series with a five-wicket victory at Port Elizabeth.
AB de Villiers top-scored for South Africa with 73 off 91 balls as they posted 262-7 on a slow pitch, England left-armer Reece Topley claiming 4-50.
In reply Alex Hales became the first batsman to be dismissed for 99 in both one-day and Twenty20 internationals.
But Jos Buttler followed his century in the first match with an unbeaten 48 as England won with 22 balls left.
The St George’s Park surface was not as conducive to shot-making as the Bloemfontein track on which England hit 15 sixes and amassed 399 in that first match on Wednesday.
They lost three wickets inside seven overs but Buttler was coolness personified, hitting three successive sixes in the closing stages to give a strong advantage into the third match in Centurion on Tuesday.
More to follow.