South Africa won the toss and elected to bowl, restricting the tourists to 181 all out in 48.3 overs on a slow wicket.
The home side never looked troubled in their reply, reaching their target with 94 balls remaining to take a 1-0 lead in the five-match series.
Sri Lanka stun South Africa to claim T20I series
Kusal Mendis (62) provided lone resistance for Sri Lanka, who were rocked by two early strikes from left-arm seamer Parnell (3-48), before leg-spinner Tahir (3-26) ripped through their middle-order.
The touring side managed just 18 boundaries as South Africa bowled a tight line with all-rounder Chris Morris (2-29) impressive on his return from injury having last played in June.
Quinton de Kock (34) and Hashim Amla (57) put on 71 for the first wicket in South Africa's reply, before the former offered a simple catch to Sandun Weerakkody at cover off the bowling of Lakshan Sandakan.
ICC reprimands Tahir for Junaid Jamshed t-shirt
Amla posted his 31st ODI half-century before he was caught and bowled by Asela Gunaratne, undone by the lack of pace in the pitch as he got his timing wrong.
But Faf du Plessis (55 not out) and AB de Villiers (30 not out) steered South Africa home with ease.
For skipper De Villiers it was a triumphant return in his first ODI for seven months having been sidelined by an elbow injury.
India issues visa to Pakistan Blind Cricket Team
South Africa have now won their last seven ODI matches having whitewashed Australia 5-0 at home in October.
The second match of the series against Sri Lanka is in Durban on Wednesday.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ