South African fast bowler Junior Dala took three wickets and made a direct-hit run-out to keep India's batting in check in the third and final Twenty20 international at Newlands on Saturday.
India, who were without captain Virat Kohli because of a stiff back, made 172 for seven after being sent in to bat in their last match of a two-month tour.
Dala took three for 35 and ran out top-scorer Shikhar Dhawan for 47 with a direct hit from the midwicket boundary.
India lost stand-in captain Rohit Sharma to Dala in the second over but looked set for a big score when Suresh Raina went on the attack in a second wicket stand of 65 with Dhawan.
Raina hit 43 off 27 balls before he was caught at long-on off left-arm spinner Tabraiz Shamsi.
Dhawan was more subdued. He was dropped twice and did not hit a boundary until the 12th over.
Just when he seemed to be finding his timing, with two more boundaries, he was run out.
None of the remaining batsmen could make more than Hardik Pandya's 21.
The three-match series is tied at 1-1.
© 2018 AFP