Captain Faf du Plessis' unbeaten century took South Africa to a comfortable eight-wicket win over Sri Lanka in the opening one-day international on Sunday.
Du Plessis finished on 112 not out and South Africa cruised to 232-2 to win with just over 11 overs to spare. Sri Lanka was bowled out for 231 in 47 overs after being put into bat at the Wanderers in Johannesburg.
Sri Lanka made history by sweeping the tests 2-0 to become the first team from the Asian subcontinent to win a series in South Africa. The tourists, now under limited-overs captain Lasith Malinga, couldn't follow up on that in the first of five ODIs.
Oshada Fernando did his best to resurrect the Sri Lankan innings after Ngidi struck in each of his first two overs back in international cricket after a four-month spell out with a knee injury.
Fernando made 49 on his ODI debut to lift Sri Lanka from 23-2 but he was run out one short of a half-century as David Miller swooped at midwicket to capitalize on confusion between Fernando and Kusal Mendis.
Mendis went on to make 60 off 73 balls but was one of Tahir's three wickets and his exit started a final collapse for Sri Lanka, which lost its last five wickets for 21 runs.
South Africa shrugged off the early loss of opener Reeza Hendricks as du Plessis took control.
He shared a second-wicket partnership of 136 with Quinton de Kock (81) and then an unbroken stand of 82 with Rassie van der Dussen (32 not out) to take South Africa home in 38.5 overs.
Du Plessis hit 15 fours and a six and has made 50 or more in his last three ODI innings.
The victory went a little way to soothing South Africa's hurt pride after losing a home test series that the Proteas were widely expected to win.
The focus for both teams switches to the 50-over format now with the Cricket World Cup less than three months away.