The Proteas' bowlers made it difficult for the tourists on Sunday, Dale Steyn claiming three for 33 and Morne Morkel three for 39.
Anwar Ali top scored with 43 not out from 55 balls, which included three straight fours in the 45th over, in Pakistan's total of 218 for nine.
The tourists won the toss and returning captain Misbah-ul-Haq elected to bat first in the opening game of the three-match series, which saw Bilawal Bhatti make his ODI debut for Pakistan at Newlands.
Pakistan openers Nasir Jamshed and Ahmed Shehzad shared a 49-run stand before Jamshed was dismissed for 24 as Steyn returned for his second spell. Jamshed outside-edged the second ball of the over straight to Jacques Kallis at second slip.
But his replacement Mohammad Hafeez did not hang around for too long before also falling victim to Steyn, edging to Hashim Amla at first slip for five.
Sohaib Maqsood was lucky to survive when Imran Tahir dropped a catch 22 overs in, but opener Shehzad was out in the next one after hitting three fours in a a knock of 35. He was caught behind by Quinton de Kock off the bowling of Kallis.
Pakistan suffered a further setback when they lost Misbah for 13, the skipper aiming for fine leg but succeeding in only in edging a Morkel delivery into De Kock's gloves for 13 to leave the visitors 97 for four.
The Proteas were in a good spell and the wickets began to tumble. In the next over De Kock claimed his third catch of the day to see off Umar Akmal for nought, Vernon Philander the bowler this time.
After a short interval for drinks, Maqsood was dropped again - this time by captain AB de Villiers, who only managed to get a finger to it - but Kallis finally claimed his wicket for 22 before Steyn bowled Shahid Afridi (26) in the next consecutive over.
Pakistan were struggling on 133 for seven with 13 overs left.and needed some big hitting to help them record a respectable total.
Number nine Ali produced a flurry of six boundaries in his unbeaten 43, while debutant Bhatti also impressed with two sixes and three fours in a knock of 39 before he was bowled by Morkel - a decision which stood following a review.
Saeed Ajmal was the last wicket to fall, perishing for three to a simple catch taken by JP Duminy in Morkel's last over of the day to leave Pakistan 218 for nine.
The Proteas boasted a strong batting line-up, with Graeme Smith and Kallis back involved.
Test skipper Smith returned to the fold after leaving the recent series between the two teams in the United Arab Emirates with post-concussion syndrome.
All-rounder Kallis last played for South Africa in a 50-over game against New Zealand on February 29, 2012 but has since been rested to manage his workload and he replaced Twenty20 captain Faf du Plessis.