Karunaratne battles but Bangladesh can dare to dream
Sri Lanka 338 and 268 for 8 (Karunaratne 126, Mustafizur 3-52, Shakib 3-61) lead Bangladesh 467 by 139 runs
Scorecard and ball-by-ball details
The Test is tantalisingly poised. Sri Lanka, holders of a proud home record, stretched their lead to 139 thanks to two centuries: of runs from Dimuth Karunaratne and of balls by the No. 8 Dilruwan Perera. But Bangladesh, playing in a landmark game of their own, can consider themselves in control of their 100th Test after picking up eight wickets on the fourth day.
The day ended on a strange note for Bangladesh after umpire Aleem Dar seemed to nod in the affirmative to an appeal, as if to suggest Suranga Lakmal had got a faint inside edge to short leg off the last ball bowled by Mosaddek Hossain. Replays, however, didn't indicate an edge but it was another example of how tough this Test has been for the umpires.
That Bangladesh made inroads through the day was because the attack was led astutely by Shakib Al Hasan, who took three wickets, including that of Karunaratne in the final session for 126. Having removed Asela Gunaratne and Niroshan Dickwella earlier, Shakib finished with 3 for 61 after 30 overs of accurate left-arm spin.
Yet the man instrumental for breaking Sri Lanka's back was Mustafizur Rahman, after the hosts looked steady the first session despite losing Upul Tharanga in the day's second over to Mehedi Hasan. Karunaratne and Kusal Mendis had weathered the early burst and added 86, large parts of it being accrued before lunch.
Mendis, who made 36, was given an early reprieve on 12 when Imrul Kayes couldn't hold on to a sharp chance at short leg. Then he was nearly run out on 28 after a mix-up with Karunaratne, but Sabbir Rahman's throw from cover missed the stumps at the bowler's end. Sri Lanka had wiped out the deficit and were ahead by 8 at lunch, looking comfortable, but that was to soon change.
Mustafizur first dismissed Mendis in controversial fashion; the third umpire overturned a not-out decision though replays didn't quite suggest a nick to the wicketkeeper. Dhananjaya de Silva and first-innings centurion Dinesh Chandimal were then out chasing wide deliveries after being starved of width for most parts of their short stays.
Even as Sri Lanka collapsed in the middle session, losing five wickets for 62 runs in 26 overs, Karunaratne battled on to reach his fifth Test century. He found an ally in Perera, who fought with him during the course of 22.2 overs in which they added 27. The gallant fight ended when Shakib had Karunaratne caught at slip after an effort that spanned 244 balls and included 10 fours and a six over mid-on.
Rangana Herath continued to blunt the bowling with Perera, batting for another nine overs before being trapped by Taijul Islam with a delivery that fizzed in with the angle from over the wicket. Perera remained steadfast in defence, only getting his first boundaries after he had faced 110 balls. He added 30 valuable runs with Lakmal before stumps.
Mohammad Isam is ESPNcricinfo's Bangladesh correspondent. @isam84