Sri Lanka 504 and 102 for 4 (Karunaratne 54*, Gunaratne 6*, Mumba 3-31) lead Zimbabwe 272 (Chari 80, Ervine 64, Williams 58, Herath 5-89) by 334 runs
Scorecard and ball-by-ball details

In isolation, the final session on day three was among Zimbabwe's best in the series. They attacked, and bowled with purpose and intensity to take four Sri Lankan wickets. But having conceded a 232-run first-innings lead due to a series of injudicious shots against spin, they were left to play catch-up yet again. Sri Lanka, who went into stumps on 102 for 4, had opened up a 334-run lead with two days remaining.

Barring spells of torrential rain, Zimbabwe will be faced with yet another uphill battle to save the Test. That 108.1 overs are the most they've batted in the fourth innings in their Test history indicates the magnitude of the task that awaits them. With 180 overs left in the Test, they have a chance to break that record, but it seems unlikely, given their travails against Rangana Herath's left-arm spin.

Batsman after batsman played for turn when there was none. While some, like Craig Ervine and Brian Chari, were out lbw, others, like Malcolm Waller and Graeme Cremer, were beaten in flight and out to expansive drives. One wicket was all it took for doubts to creep into the batsmen's minds as a measured approach at the start of the day gave way to attempts to throw the bowlers off.

Herath was the biggest beneficiary of Zimbabwe's indiscretions, finishing with 5 for 89 to become just the third bowler after Muttiah Muralitharan and Dale Steyn to pick up five-wicket hauls against all Test oppositions. But the other bowlers chipped in too - offspinner Dilruwan Perera exploited the rough to pick up three wickets, while right-arm seamer Suranga Lakmal took two. All the bowlers were supported by an agile slip cordon that hung on to tough chances.

The day had begun with much promise. With the surface at its best for batting, Zimbabwe, resuming on 126 for 2, had an opportunity to grind Sri Lanka's bowlers and eat into the deficit. Instead, they provided a demonstration of how not to play spin. Once the 117-run stand between Ervine and Chari was broken, early on the third morning, Zimbabwe collapsed in a heap, losing their last five wickets for 19 to be bowled out for 272 midway through the second session.

Sri Lanka started their second innings shakily against a fired up attack. Carl Mumba showed significant recovery from a knee trouble that forced him to hobble off the field early on the first day. He bent his back and hustled the batsman for pace, the reward for which came in the form of Kusal Mendis, who top-edged a pull to mid-on. He also dismissed opener Kaushal Silva and first-innings centurion Dhananjaya de Silva with juicy full tosses. Upul Tharanga, fighting to stay in contention for a middle-order berth for South Africa after a century and half-century here, played all around a Cremer delivery that spun back in to trap him leg before wicket.

Dimuth Karunaratne, guilty of frittering away a start in the first innings, overcame patches of discomfort against the away-going deliveries, to bring up a half-century. He helped Asela Gunaratne, coming off a maiden Test ton in the first innings, see off a nervous last 20 minutes as Sri Lanka forged ahead despite a top-order wobble, courtesy the efforts of their 38-year old captain.

Shashank Kishore is a senior sub-editor at ESPNcricinfo