Salim shared an unbroken third-wicket stand of 115 with Inzamam-ul-Haq, who hit an unbeaten 51, as Pakistan cruised home at 166 for 2 from 44.4 overs after South Africa made only 163 for 9 in their 50 overs.
The opening batsmen, Saeed Anwar (20) and Aamir Sohail (22), had both gone by the 20th over but Salim and Inzamam pulled their side round.
South Africa, depleted by injuries to the all-rounder Brian McMillan, and the fast bowler Craig Matthews, failed to build on a useful opening stand of 49 by Kepler Wessels and Andrew Hudson.
Aqib Javed celebrated his Pakistan recall by capturing his 100th wicket in one-day internationals, dismissing Jonty Rhodes for 16.
TRIANGULAR SERIES (Karachi): South Africa 163 for 9 (50 overs); Pakistan 166 for 2 (44.2 overs) (Inzamam-ul-Haq 51no, Salim Malik 62no). Pakistan won by eight wickets. Standings: 1 Australia (P 2, Pts 4); 2 Pakistan (2-2); 3 South Africa (2-0).Reuse content