Zimbabwe were dismissed for 186 runs in their second innings within sight of what would have been a morale boosting draw.
Sri Lanka's Dilruwan Perera and stand-in skipper Rangana Herath took three wickets each with Perera bowling out tailender Chris Mpofu in the 91st over of Zimbabwe's second innings to clinch victory despite a gallant knock by captain Graeme Cremer, who followed up a first innings century with a stubborn 43.
Tharanga century hammers home Sri Lankan dominance
Sri Lanka declared their second innings as expected at the start of the day on 247 for six, leaving 98 overs to bowl out the hosts, who were set a near-impossible target of 412 to win.
Zimbabwe's openers saw off the first 16 overs before Brian Chari was bowled for 10 and they then lost four wickets in 23 balls before lunch.
Sean Williams' 40 took Zimbabwe to 136-6 at tea but he was dismissed in the first over of the last session.
On day four: Sri Lanka in cruise control against Zimbabwe
Cremer saw Zimbabwe into the final hour before being stumped for the ninth wicket with 10 overs left.
"We are definitely upset that we couldn't last the [final] couple of overs. But to last that long was good for test cricket and there are a lot of positives to take from it," said Cremer.
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