A century from du Plessis and three wickets from Tahir paved the way for a comfortable eight-wicket win for the Proteas in the first ODI at Johannesburg.
Having bowled out the tourists for 231 runs, South African put in a dominant batting display and cruised to a win with more than 11 overs to spare in the end.
Opener Quinton de Kock and du Plessis’ 136-run stand for the second wicket set up the comprehensive win despite Reeza Hendricks falling early to Vishwa Fernando.
De Kock fell for 81 after being pinned on the pads by Akila Dananjaya but du Plessis would continue to march on. The right-hander notched up his 11th ODI ton and remained unbeaten on 112 in the company of Rassie van der Dussen.
Earlier, Sri Lanka made a poor start after being made to bat first but recovered well through contributions from Kusal Perera, Kusal Mendis and Oshada Fernando.
South Africa pacer Lungi Ngidi removed both openers Niroshan Dickwella and Upul Tharanga inside four overs before Perera (33) and Fernando (49) forged a 76-run stand.
Fernando missed out on his half-century after being run-out for 49 while Tahir had Perera caught behind. The South African veteran leg-spinner also ended the stays of Mendis (60) and a well-set Dhananjaya de Silva (39) in an excellent spell to put the hosts back on top.
There was also a wicket for Proteas debutant Anrich Norte with the pacer picking up the scalp of tail-ender Lakshan Sandakan.
Sri Lanka: 231 all out
Kusal Mendis: 60 (73)
Imran Tahir: 3-26
Lungi Ngidi: 3-60
South Africa: 232-2 (38.5 overs)
Faf du Plessis: 112 not out (114)
Quinton de Kock: 81 (72)
Know more about Sport360 Application