South Africa, set a revised target of 176 from 29 overs, were 104-5 in 21 overs when a heavy downpour at the Premadasa stadium forced the match to be called off.
With 121-5 being the par score at that stage, the Proteas lost by 17 runs to suffer their second defeat in the series following the 180-run loss in the first match last Saturday.
Left-arm spinner Herath trapped opener Alviro Petersen leg-before for 24, and had Faf du Plessis caught behind to reduce the Proteas to 69-5 by the 14th over.
David Miller (22 not out) and Ryan McLaren (14 not out) put on 35 runs for the unbroken sixth wicket before rain ruined their hopes of pulling off an upset.
South Africa were dealt another blow as star batsman Hashim Amla injured his left knee while fielding and was rushed to hospital for precautionary scans.
Amla, who had been sidelined for the first match due to a strained back, was unable to bat and faces a race against time to be fit for the third match in Pallekele on Friday.
So