The result means South Africa remain on course for securing a semi-final spot after they chalked up their second win in the second phase of the tournament.
They have four points while Australia and New Zealand lead the standings with six.
Medium pacer Shaun Pollock, who was under pressure after poor performances in his last two matches, rediscovered his accurate line and length and took two for 17 during the Irish innings.
Pollock struck in the third over when he trapped Jeremy Bray before Ireland had scored a run.
William Porterfield (14) became Pollock's second victim in the 13th over when he misread the length and drove up, allowing Kallis a tumbling catch.
After a slow start complicated by interruptions due to rain, the Irish met South Africa's aggression with attacking strokes.
That approach brought runs at a steady rate but it also cost wickets. Andrew White top-scored for Ireland with a cameo of 30 off 30 balls which included five fours.
His dismissal in the 29th over, when he slapped a full toss from part-time off-spinner Graeme Smith into the hands of Herschelle Gibbs at mid-on, helped South Africa re-establish their grip on the contest.
Smith and Kallis put South Africa in control with a solid stand of 70 for the second wicket before Smith (41) was stunningly caught and bowled by seamer Trent Johnston, who lunged to his right to take a one-handed catch.
South Africa were 85 for three when Gibbs (6) pulled a ball from fast bowler Rankin to White at mid-wicket.
Kallis was 40 not out when Rankin dropped him off his own bowling in the 19th over.
Three overs later, Kallis, on 45, swept a delivery from off-spinner Kyle McCallan.
Johnston sprinted from square leg, but he failed to latch on to the looping ball. Prince (47 not out) helped Kallis take South Africa to their win in an unbroken stand of 80.