Eoin Morgan’s tourists therefore lost the series from 2-0 in front as South Africa’s old firm AB de Villiers (101no) and Hashim Amla (59) shared a century stand to help ease to a five-wicket victory with six overs to spare.
Reece Topley (three for 41) took two wickets in two balls to briefly revive England hopes after Hales’ 112 had salvaged 236 all out despite a distinct lack of support – but, from 22 for three, De Villiers led a telling response with a 94-ball century.
Hales capped his hugely consistent series by turning his fifth successive half-century into his only hundred, the second of his ODI career. But no other England batsman reached even 30 and they lasted just 45 overs after losing their last seven wickets for 81.
Hales became only the fifth Englishman to hit five consecutive ODI 50s, and the first to do so in the same series – going on to a 116-ball century which contained 13 fours.
At the other end, England were largely hapless in collective contribution to their own downfall as Kagiso Rabada, David Wiese and Imran Tahir cashed in three wickets each.
The tone was set in a frenetic first ten overs which, nonetheless, went England’s way as Hales and Joe Root passed 50 together for the fourth time in as many matches.
Jason Roy was pinned lbw on the back foot by a Tahir leg-break and South Africa then immediately returned to seam at both ends with a plan for Root.
Chris Morris attacked him on the back foot with leg-side catchers in abundance and when the full ball came, Root edged to slip on 12 only for Amla to put down a straightforward catch. It was not costly because Tahir returned and, overturning an initial not-out verdict from Johan Cloete, had his second lbw victim when Root missed a sweep at a straight one.
Morgan tried to kickstart his innings with a big shot, but managed only an outside edge behind on the charge at Wiese. Ben Stokes helped Hales put on 70, as England reached the promise of 155 for three in the 28th over. But Rabada returned and changed the match with two big wickets in as many legitimate balls, bowling Stokes and Jos Buttler.
Captain Eoin Morgan admitted England were outplayed. He told Sky Sports: “I don’t think we did enough. We were outplayed here today. We did have chances in previous games to wrap up the series but we weren’t good enough.
“The opportunities would have been executed if we had more experience in the side, but we’re growing and learning. We pushed them so hard even though we underperformed, we started with the ball exceptionally well but it just wasn’t enough.”
Hales said: “It was a very close series throughout. We probably let ourselves down with the bat in the last couple of games. We were 40 or 50 short on both occasions.
“We’ve got a really exciting side, we’ve come on a lot since the World Cup last year, we’ve played some exciting cricket against some top opposition and we’re still learning as a squad and we’ve lost to a really tough South Africa side here.”
De Villiers said: “I’ve been a little bit off my game for the past month so it’s nice to finish like that in the ODI series and lead from the front.
“It’s an integral part of being a captain to lead from the front, you can’t just chip in with tiny performances.
“It was a great team performance and I’m really happy to finish like that.”