Jacques Kallis hit an unbeaten 66 and added 80 runs for an unbroken fourth wicket stand with Ashwell Prince (47 not out) to guide the Proteas to their second win in as many Super Eight matches.
South Africa, who restricted Ireland to 152-8, were set a revised target of 160 after two rain interruptions of nearly three hours and a 15-minute delayed start, reduced the match to 35 overs per side.
Graeme Smith's side, who achieved a narrow nerve-tingling one-wicket win over Sri Lanka here last week, now meet Bangladesh on Saturday before their crucial matches against the West Indies, New Zealand and England.
Ireland, who gave another good account of themselves, could have made a match out of it had they not dropped Kallis twice.
Kallis, when on 40, was dropped by paceman Boyd Rankin off his own bowling, while Trent Johnson grassed a paddle sweep off Kyle McCallan five runs later -- chances which allowed Kallis to supplement the run-chase in fading light.
Kallis put on 70 runs for the second wicket with Smith (41) after South Africa had a shaky start which saw them losing AB de Villiers off Rankin's third delivery of the innings for nought.
Smith hit six boundaries during his 45-ball knock before his counterpart Johnston had him smartly caught off his own bowling.
Smith, when 26, also completed his 4,000 one-day runs in his 109th match.
Herschelle Gibbs (six) was scrappy before he pulled straight to square-leg off Rankin who finished with 2-26.
Kallis hit eight boundaries but it was Prince who hit the winning six with 21 balls to spare.
Earlier, Charl Langeveldt grabbed 3-41, two off successive deliveries to derail Ireland's progress for whom none of the batsmen could play a long innings.
The 32-year-old Langeveldt, who took five wickets in South Africa's win over Sri Lanka, led the attack after Smith won the toss and put Ireland in.
Andrew White top-scored with 30 and added 39 for the fifth wicket with Andre Botha (14) to lift Irish hopes after their tempo was broken by the rain interruptions.
Shaun Pollock exploited the early wet conditions by dismissing openers Jeremy Bray (nought) and William Porterfield (14) to finish with 2-17.
Pollock, whose form was a worry after his costly and wicket-less bowling against Australia and Sri Lanka, now has 377 wickets in 279 matches -- joint fourth on the all-time list with Sri Lanka's Chaminda Vaas.
Eoin Morgan (28) and Niall O'Brien (25) built the innings through a 32-run third wicket stand. Morgan hit four boundaries before he fell off a short Andrew Hall delivery.
Left-hander O'Brien, who made a brilliant 72 in Ireland's three-wicket win which dumped Pakistan out in the first round, hit four boundaries before he became the first of Langeveldt's victims.
Dave Langford-Smith hit out in the slog overs to finish with 17 not out including a four and a six.
Ireland, who lost to England by 48 runs in their first Super Eights match, now meet New Zealand in their next match here on April 9.