Sri Lanka 293 for 7 (Chandimal 55, Cremer 3-100) trail Zimbabwe 356 (Ervine 160, Herath 5-116) by 63 runs
Scorecard and ball-by-ball details
Graeme Cremer spun them hard and his team-mates stretched, dived and hunted balls down in the field so splendidly that, at the end of the second day in Colombo, Zimbabwe finished with a good chance of taking a first-innings lead - Sri Lanka seven down, and still 63 runs behind.
Where Craig Ervine held Zimbabwe's innings of 356 together, Cremer performed a similar role with the ball. Thirty of Zimbabwe's 82 overs were his, and rarely did batsmen appear to have his measure.
The legspinner found increasing assistance from the surface, beat the edge regularly through the second half of the day, and brought himself on to break the hosts' rhythm whenever they appeared comfortable at the crease. Figures of 3 for 100 do not flatter the impact he had on the day.
Sri Lanka, meanwhile, will rue two mini-collapses: the first just after lunch, which cost them their top three for 32 runs, and the second soon after tea, in which three further wickets fell for 26. This, after the openers had begun with such confidence. Upul Tharanga was regal at the top, racing to 26 off his first 14 balls, his delectably timed drives piercing the tight infield. He and Dimuth Karunaratne put on 84 for the first wicket, before that first stumble took place.
Sri Lanka will regret their batsmen not having gone on to triple figures, and Tharanga will regret it most. He was perfectly at ease during virtually the whole of his 71, and was only dismissed because of a little carelessness while backing up at the non-striker's end. The last wicket of the day - Dilruwan Perera's - was also a run-out, and again it was of a batsman who had begun to get the better of the bowling.
The tide began turning thanks to Zimbabwe poking holes in the hosts' middle order. Barring a 96-run stand for the fourth-wicket between Dinesh Chandimal - who scored the only other half-century of the innings - and Angelo Mathews, there weren't very many contributions. And as a result, Sri Lanka were left relying on Asela Gunaratne, struggling with a hamstring injury he picked up in the field, to take them closer to parity.
It had been a loose Karunaratne shot that had set Sri Lanka's first slide in motion. Having played cautiously through the morning session, he attempted to cut a ball angled into him by Donald Tiripano, and sent a thick edge to slip, where Hamilton Masakadza held the sharp chance.
His confidence bolstered by that breakthrough, Tiripano stacked the offside infield, and delivered a disciplined spell, in which he dared the batsmen to take risks. There were no further wickets for him, but at the other end, Kusal Mendis nicked a bouncing, turning delivery from Cremer, which he perhaps did not need to play at. Mendis has often been jumpy at the start of his innings, and this knock was no different. In 15 balls at the crease, he attempted several pull shots and often found the fielders.
Tharanga, meanwhile, who could not have looked more natural plundering the seamers and advancing down the pitch at the spinners, was the victim both of his own carelessness and a little bad luck. When Chandimal drove Tiripano straight, the bowler managed to get fingertips to the ball, which then clattered into the stumps at the non-striker's end. Tharanga had not bothered to keep his bat in the crease, using it to lean on instead. His boot was on the crease, but not behind it.
Cremer was the protagonist in the next big Sri Lanka stutter. The pitch had begun to sing for him in the second half of the second session, and switching ends after tea, he bowled himself into a fresh rhythm. Chandimal reached his half-century by then, but Cremer, ripping the ball more with each passing over, got it to dip and turn sharply. It flicked the shoulder of Chandimal's bat and wicketkeeper Regis Chakabva picked up his second difficult catch of the day.
Four overs later, another big turner from Cremer made a further dent in Sri Lanka's innings - Niroshan Dickwella fell unable to handle one that pounced at him off a length. The well-set Mathews was the next to depart. Attempting to paddle-sweep Sean Williams against the turn, he offered only a top-edge to the legside, which Masakadza - running back from slip - snaffled up with a full-length dive.
Sri Lanka were now on 238 for 6 and Dilruwan, having been promoted to No. 7 as a result of Gunaratne's niggle, took on the responsibility of pushing the innings forward. He did so by taking calculated risks against the spinners - hitting Sikander Raza and Williams for one six apiece - but just as his partnership with Gunaratne, who came in at No. 8, began to look good, Zimbabwe managed to break it.
Gunaratne cut a ball forward of point, and set off for the run. Dilruwan, however, was late to respond, and by the time a diving Tarisai Musakanda made the stop, flicked the ball to Malcolm Waller at cover in one smooth motion, and Waller then found Chakabva behind the stumps, Perera was caught short by at least a metre. It was a spectacular piece of fielding.
Rangana Herath played a customary slog sweep to make the final runs of the day, but thanks to a doughty Zimbabwe performance, and Sri Lanka's sloppy running, the hosts will begin day three in a precarious position.
Early in the day, Sri Lanka had opened the bowling with Lahiru Kumara - the wilder, but more aggressive seam option in their team - and, thanks in part to the early pressure he created, Zimbabwe's two remaining wickets cost only 12 runs.
It was Herath, however, who made the first breakthrough. Tiripano attempted the reverse sweep that had brought him success on the first afternoon, but managed only to send the ball to Karunaratne at slip. That was Herath's 378th dismissal, taking him past the tallies of Malcolm Marshall and Waqar Younis. He also wrapped up his 30th five-wicket haul, putting him clear at fifth on that all-time list, behind four bona fide greats of the game.
Andrew Fidel Fernando is ESPNcricinfo's Sri Lanka correspondent. @andrewffernando