Rangana Herath once again proved Zimbabwe's tormentor-in-chief as he took a second five-for in as many days to edge Sri Lanka closer to victory in the second Test in Harare.
A day on from becoming just the third player to take a five-for against every Test-playing nation, the Sri Lanka captain repeated the feat on day four to take his tally to 10 wickets for the match.
The left-arm spinner tore through the top order as Brian Chari (8), Hamilton Masakadza (10) and Tino Mawoyo (15) all wilted.
Craig Ervine (65 not out) and Sean Williams (45) offered resistance, but Herath returned to snare Peter Moor (20) and Graeme Cremer (5).
Zimbabwe closed on 180-7, still 311 runs shy of their 491 target, making it a seeming inevitability Sri Lanka will complete a 2-0 series whitewash.
Earlier, Dimuth Karunaratne fell 12 short of a second century of the series and Kusal Perera scored a rapid 62 off 69 as Sri Lanka declared on 258-9 in their second innings having resumed 102-4.
Herath (5-45) wasted little time getting stuck back into Zimbabwe's top order as Chari's middle stump was ripped out in the eighth over, before Masakadza failed with an lbw review.
Mawoyo then wafted low to Dhananjaya de Silva, who pouched an excellent catch in the slips, before Williams and Ervine put on 74 for the fourth wicket to stem Sri Lanka's momentum.
Ervine was particularly attacking and struck eight fours and a six in his unbeaten knock, but Williams and Malcolm Waller (0) fell in quick succession to Lahiru Kumara (1-42) and Dhananjaya (1-10) respectively.
Herath then returned to the attack and Moor popped one to silly point as Herath became the first bowler to 50 Test wickets in 2016, and he added another victim by taking Cremer's middle stump.