Tillakaratne Dilshan made an unbeaten 115 as Sri Lanka defeated South Africa by eight wickets in the fourth one-day international in Pallekele on Sunday to take an unassailable 3-1 lead in the five-match series.
Kumar Sangakkara chipped in with 91 as the hosts overhauled South Africa's 238 all out in just 44 overs.
JP Duminy top-scored for the Proteas with 97 before being the last man out, while recalled opener Hashim Amla contributed 77 from 71 balls.
Sri Lanka always looked in control in pursuit of their target, with the required run-rate never straying too far from the four-an-over mark.
Dilshan and Sangakkara's 184-run stand for the second wicket put the hosts on the brink of victory before Lahiru Thirimanne (one not out) arrived to see Dilshan hit the winning run - clipping a Morne Morkel delivery off his pads to square leg to round off an emphatic success with six overs to spare.
Lonwabo Tsotsobe had made the breakthrough in the 10th over of the Sri Lanka innings, inducing a loose shot from Mahela Jayawardene (12) which was snaffled by Amla at gully.
But that was as good as it got for South Africa, who were powerless to prevent Dilshan and Sangakkara from cruising over the line.
Fine all-round display
Dilshan's knock completed a fine all-round display, the 36-year-old having earlier claimed the key wickets of Amla and AB de Villiers with his off-spin.
Ajantha Mendis (4-51) and Lasith Malinga (3-52) also finished with handy figures as the Proteas - Duminy and Amla apart - struggled to get going.
Duminy and Amla shared a 101-run partnership which ended when the latter was trapped lbw by Dilshan.
Amla, who missed Friday's third ODI due to a knee injury, was caught on the back foot to one that kept low as Dilshan bowled round the wicket, with HawkEye showing the ball would have hit off and middle stumps.
Fast running out of partners, Duminy picked up the pace in a bid to reach three figures but, two balls after smashing Mendis over wide long-on for six, he went for another big hit and was outfoxed by the spinner to leave South Africa 238 all out with eight balls of the innings remaining.
The fifth and final one-dayer will be played in Colombo on Wednesday.