Herath recorded figures of 5 for 89 - his first five-wicket haul against Zimbabwe - to bowl Sri Lanka to a 232-run lead in the first innings on the third afternoon of the third Test.
After the tourists opted not to enforce the follow-on, openers Dimuth Karunaratne and Kaushal Silva took them to tea on 13 without loss at Harare Sports Club.
Although Zimbabwe made a promising start to their reply to Sri Lanka's first innings total of 504 all out, reaching 134 for two on the third morning, they ultimately succumbed to spin with offspinner Dilruwan Perera picking up 3 for 51 as the hosts lost their last five wickets for just 19 runs.
Having picked up both of the wickets to fall on the second evening, Herath made a key breakthrough when he bowled Brian Chari for a career-best 80 with a quicker delivery, and then dismissed Malcolm Waller for 18 on the stroke of lunch.
More From This Section
Zimbabwe had been rescued by their lower order in the first Test, but after the interval Perera ensured there would be no such recovery as he grabbed three wickets in quick succession.
All that was left was for Herath to pick up a record fifth wicket, as he trapped Carl Mumba lbw to join countryman Muttiah Muralitharan and South Africa's Dale Steyn among an elite group of bowlers with five-wicket hauls against all opponents.