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 a devastating 28-ball cameo in the closing stages to give a strong advantage into the third match in Centurion on Tuesday.
Buttler does it again
When Joe Root played on to his stumps for 38 in the 26th over, England skipper Eoin Morgan brought himself in at number four, deciding his busy style of play against the spinners would be better suited to the slow, low pitch than Buttler’s daring brand of strokeplay.
With 94 needed from as many deliveries, Morgan hoisted Morne Morkel towards long-on and De Villiers took a perfectly judged catch.
Ben Stokes also came in ahead of Buttler and successfully overturned an lbw dismissal third ball from Imran Tahir as replays showed the ball pitched outside leg-stump, the third unfortunate decision from South African official Johan Cloete.
But the left-hander had still to score when he got an inside edge on to his stumps off Morkel in the next over.
The stage was set for Buttler, at number six instead of number four as he was in the first match, with 87 needed from 80 balls.
Man-of-the-match Hales, who made only 136 runs in eight innings in the Test series, looked certain to record his second ODI century but his composed 124-ball innings ended in the 42nd over when the ball brushed his bat in his follow-through and glanced to the wicketkeeper.
However Buttler, who earlier in the day was bought for what now seems a bargain £385,000 by Mumbai Indians in the Indian Premier League (IPL) auction, bided his time before hitting three successive boundaries off paceman Kyle Abbott.
Demonstrating more clinical hitting, he then hit spinner Tahir into the leg-side and down the ground for three massive maximums to take England within eight of victory that Moeen ensured with successive fours off Morkel.
Catches win matches
England’s left-arm opening bowlers Topley and David Willey had set an impressive tone, restricting South Africa to 12-1 after the opening six overs and were ably supported by spinners Adil Rashid and Moeen Ali, who conceded only three boundaries between them in their 20 overs.
Although the South Africans were not exactly plundering the runs, De Villiers had just hit his first six with an imperious front-foot pull off Chris Jordan and was building for a final charge inside the last 10 overs with his team 205-3.
When he launched Ben Stokes deep into the leg-side he must have been hopeful that the swirling breeze and the bright sunshine might have made things difficult for the fielders.
But Jordan gave another example of his outstanding catching ability, running back to clutch the ball over his shoulder, his 18th catch in 26 ODIs.
JP Duminy departed three balls later lbw but although replays would show the ball was missing the stumps, he could not ask for a review because that had been spurned by Quinton de Kock, who also wasted the South Africa fielding review when he persuaded De Villiers to check a caught behind appeal against Hales that showed not a trace of contact with the bat.
Only four more boundaries followed in the remainder of the innings, unlike the six fours and five sixes England added from the final 10 at Bloemfontein in the opening match.
Jordan may have gone for 33 in his six overs with the ball but his superb catch saved a potentially decisive number of runs.
What they said
England captain Morgan: “The challenge today was adapting to the different conditions and that’s what pleased me the most.
“We were very happy with 260, we thought it was below par and given the way we’ve been playing with the bat recently we backed ourselves to get them.
“We’ve not played on a surface like this for a long time, so it was top-class.”
South Africa skipper De Villiers: “I felt we were about 20 short, 290-300 would have been ideal.
“Credit to the opposition, they out-thought us at times. Jos Buttler played an exceptional knock but they managed the innings really well early on with Alex Hales and Joe Root, and they set it up for a guy like Jos to finish it.
“Hopefully we’ll get it to 2-2 on the Highveld and get it back to Cape Town for a decider.”
Article source: http://www.bbc.com/sport/cricket/35512567