He misses his century by one run but bails out team to a respectable 272 for seven and the Irish spring no more surprises.
Duminy takes South Africa past Ireland and into the quarter-finals
JP Duminy agonisingly missed a century by just one run as the Proteas recovered from a poor start to make 272 for 7 in Kolkata before Ireland were dismissed for 141 to lose by 131 runs.
"We wanted to qualify. We've got one round robin game left against Bangladesh and hopefully three good games in the knockout phase. We've done the first part of it now," said South Africa captain Graeme Smith.
South Africa were struggling at 117 for five before Duminy and World Cup debutant Colin Ingram (46), replacing the injured AB de Villiers, put on 87 for the sixth wicket at an eerily quiet 65,000-capacity Eden Gardens.
The 26-year-old Duminy, who also added 65 for the seventh wicket with Johan Botha, was on 99 when he skied a mistimed drive into the safe hands of a diving Kevin O'Brien in the final over.
Ireland were dismissed in the 34th over with Gary Wilson top-scoring with 31 and Morne Morkel and Robin Peterson claiming three wickets each. "We started off pretty well. We got couple of wickets up front. We thought it was important to get wickets to peg them back and I thought we did that pretty much throughout," said Ireland captain William Porterfield.
"We were happy enough at half-time with chasing 270. It was not out of our reach but we consistently lost wickets."
South Africa now top Group B and have joined the four qualifiers from Group A in the quarter-finals — New Zealand, Australia, Pakistan and Sri Lanka.
Their victory leaves India, West Indies, Bangladesh and England scrambling for the last three spots in their pool.
England's problems piled up on Tuesday when captain Andrew Strauss and off-spinner Graeme Swann missed training with stomach problems and were rated doubtful for the clash against the West Indies in Chennai on Thursday. Fast bowler Jimmy Anderson also needed treatment on a shoulder injury.
England must beat the West Indies to have a chance of qualifying for the quarter-finals, but even then they will need other results to go their way.
With their last-eight place already assured, Pakistan coach Waqar Younis now wants his team to beat defending champions Australia in their final group match on Saturday.
The 1992 champions eased into the last eight with a comfortable seven-wicket win over Zimbabwe on Monday and now face Australia, who are on an unbeaten 33-match streak in the World Cup.
"They are such a big team, world champs, and haven't lost for ages," said Waqar of Australia, whose last defeat in the event came at the hands of Pakistan in 1999.
Meanwhile, Canada's John Davison, who once held the record for the fastest World Cup century, will retire from international cricket after his side's final match against Australia.
Davison, born in Canada but brought up in Australia, smashed his famous hundred off just 67 balls against the West Indies at Centurion in 2003.
"I suppose it's pretty fitting it's against Australia," 40-year-old Davison said of his final international match on Wednesday.
Australia's Matthew Hayden broke Davison's record at the 2007 World Cup and it was broken again at the ongoing tournament by Ireland's Kevin O'Brien, who reached three figures off just 50 balls against England.
H Amla c Dockrell b Rankin 18
G Smith run out 7
M van Wyk b Dockrell 42
J Kallis run out 19
JP Duminy c K O'Brien b Mooney 99
F du Plessis c Johnston b Stirling 11
C Ingram b Johnston 46
J Botha not out 21
R Peterson not out 0
Extras (b2, lb3, w4) 9
Total (for seven wickets; 50 overs) 272
Fall of wickets: 1-24 (Amla), 2-52 (Smith), 3-84 (van Wyk), 4-95 (Kallis), 5-117 (du Plessis), 6-204 (Ingram), 7-269 (Duminy)
Bowling: Rankin 10-0-59-1 (w1), Johnston 10-0-76-1 (w1), Mooney 8-0-36-1, Dockrell 10-0-37-1, Stirling 10-0-45-1 (w1), Cusack 2-0-14-0 (w1)
W Porterfield c Smith b Morkel 6
P Stirling c Kallis b Morkel 10
E Joyce lbw b Botha 12
N O'Brien c van Wyk b Kallis 10
G Wilson lbw b Peterson 31
K O'Brien c Amla b Peterson 19
A Cusack c Smith b Peterson 7
J Mooney c van Wyk b Kallis 14
T Johnston c van Wyk b Duminy 12
G Dockrell c van Wyk b Morkel 16
B Rankin not out 0
Extras (w4) 4
Total (all out; 33.2 overs) 141
Fall of wickets: 1-8 (Porterfield), 2-19 (Stirling), 3-35 (N O'Brien), 4-51 (Joyce), 5-92 (K O'Brien), 6-92 (Wilson), 7-107 (Cusack), 8-123 (Johnston), 9-137 (Mooney), 10-141 (Dockrell)
Bowling: Steyn 4-1-13-0, Morkel 5.2-0-33-3 (w2), Kallis 6-1-20-2, Botha 8-0-32-1 (w2), Peterson 8-0-32-3, Duminy 2-0-11-1
Result: South Africa win by 131 runs