Gibbs scored 100 and put on 143 with Jacques Kallis (71) for the third wicket as South Africa made 291 for five, the highest score of the series, after being put in.
England then collapsed to 183 all out in 41.2 overs, Kevin Pietersen providing the only defiance with 75 off 85 balls. Makhaya Ntini took three wickets for 29 as the home side went 2-1 up in the seven-match series.
It was Gibbs's 14th one-day hundred and included eight fours and three sixes. Big-hitting Justin Kemp put the perfect finishing touch to the innings by then hammering 57 off 36 balls, including four sixes, as 98 came off the last 10 overs.
It was Gibbs's first hundred batting in the middle order. He was moved down from opener after the first match in the series and has scored 228 runs in three innings since.
South Africa had lost AB de Villiers, trapped leg before by seamer Darren Gough for nine, with the total on 18 and captain Graeme Smith, also lbw to Kabir Ali, to make it 50 for two.
Kallis, joined by Gibbs, batted with his usual composure and looked set to open up before he and his partner tried one quick single too many and Kallis was run out by a direct hit from Paul Collingwood. He faced 97 balls and hit six boundaries.
Gibbs increased his assault on the bowlers and pounded three massive sixes -- one off spinner Ashley Giles that nearly cleared the stadium over square leg.
Kemp was particularly hard on seamer Kabir Ali as he smashed four sixes in the final three overs.
Ali's first seven overs cost 15 runs but he went for 43 runs in his last three, and 36 in the last two, for figures of one for 58. Steve Harmison's first five overs went for 44 but he fought back for one for 65.
England's reply started promisingly as openers Marcus Trescothick and Geraint Jones took the score to 30 without alarm after five overs.
But Jones's departure, caught behind by Mark Boucher off Ntini for 19, sparked a mini collapse as three wickets fell for three runs in 12 balls to make it 35 for three.
Captain Michael Vaughan (0) was caught at slip by Kallis off Shaun Pollock and Trescothick (13) was bowled by Ntini in the space of two overs.
Only Pietersen withstood the onslaught before holing out at deep square leg off spinner Nicky Boje after hitting the previous three deliveries of the over for four, six and six.
The fifth one-dayer, a day-nighter, is scheduled for Wednesday in East London.
South Africa
G.Smith lbw b Ali 16
A de Villiers lbw b Gough 9
J.Kallis run out 71
H.Gibbs c Bell b Harmison 100
J.Kemp run out 57
A.Prince not out 14
Extras (lb-6 w-18) 24
Total (for five wickets, 50 overs) 291
Did not bat: M.Boucher, S.Pollock, N.Boje, M.Ntini, A.Nel.
Fall of wickets: 1-18 2-50 3-193 4-227 5-291
Bowling: Gough 10-1-53-1, Harmison 10-0-65-1, Ali 10-1-58-1, Collingwood 5-0-24-0, Trescothick 1-0-12-0, Giles 10-0-52-0, Vaughan 4-0-21-0
England
M.Trescothick b Ntini 13
G.Jones c Boucher b Ntini 19
M.Vaughan c Kallis b Pollock 0
A.Strauss c Prince b Nel 17
K.Pietersen c de Villiers b Boje 75
I.Bell c Boucher b Kallis 2
P.Collingwood c Boucher b Pollock 11
A.Giles c Pollock b Ntini 20
Kabir Ali run out 1
D.Gough not out 9
S.Harmison c Nel b Boje 4
Extras (b-3 lb-3 w-6) 12
Total (all out, 41.2 overs) 183
Fall of wickets: 1-32 2-33 3-35 4-73 5-92 6-127 7-148 8-163 9-175
Bowling: Pollock 10-0-35-2, Ntini 9-1-29-3, Nel 6-0-27-1, Kallis 6-0-36-1, Kemp 2-0-9-0, Boje 8.2-0-41-2
Result: South Africa won by 108 runs
First match: England won by 26 runs (Duckworth/Lewis method)
Second match: Match tied
Third match: South Africa won by three wickets
Fifth match: Feb 9, East London
Sixth match: Feb 11, Durban
Seventh match: Feb 13, Centurion