Fellow-spinner Lakshan Sandakan also took four wickets, to earn the man-of-the-match award, as Sri Lanka hit back at their critics with a confident performance in Galle.
Sri Lanka bowled out Zimbabwe for 155 and then reached 158-3 in 30.1 overs. Upul Tharanga ended unbeaten on 75. The win relieved pressure on Sri Lanka captain Angelo Mathews after the squad was accused of being unfit by the country's sports minister.
"I wouldn't call it a clinical performance," he said. "We still dropped catches."
But Mathews said Sri Lanka's "attitude and intensity was superb. We just need to regroup, and it was great effort from the boys."
The captain hailed Sandakan and Hasaranga, two of the three changes made after Zimbabwe tore apart the Sri Lanka bowlers in their six wicket win on Friday.
"Sandakan was brilliant, so was Wanidu. Credit should go to the selectors to pick him. I, honestly, haven't seem him much," Mathews said of the newcomer.
Nineteen-year-old all-rounder Hasaranga bowled only 16 balls but tore through Zimbabwe's tail.
Malcolm Waller hit Hasaranga for four but was bowled the next ball going for another big hit. The teenager then snapped up Donald Tiripano and Tendai Chatara with googlies.
Mathews won the toss and put Zimbabwe into bat. Hasaranga replaced Lahiru Madushanka with fast bowler Dushmantha Chameera and Sandakan coming in for Amila Aponso and Akila Dananjaya.
Zimbabwe looked rocky from the start. Solomon Mire, who scored his maiden one-day century in Friday's win, was out for zero after facing just five balls.
Hamilton Masakadza scored a patient 41 and Waller hit out for his late 38. But Zimbabwe never got to grips with Sri Lanka's spinners.
"We thought the wicket was a little bit different. Maybe 230 would have been a good score," said Zimbabwe captain Graeme Cremer. "It was just one of those days."
Zimbabwe could have worries over bowler Tendai Chatara before the third of the five internationals on Thursday in Hambantota. Charata walked off with a suspected knee injury.
The two sides will also play a Test during Zimbabwe's tour.