Karunaratne missed his double hundred by four runs in a marathon nine hour stay at the crease on the second day of the Test before he unluckily played onto leg-spinner Yasir Shah just before dinner.
Shah took 6-184 in a marathon 55.5 overs of hard work and toil on a flat Dubai stadium pitch.
Pakistan trail by 1-0 in the series after they lost the first Test by 21 runs in Abu Dhabi.
Karunaratne added 146 with skipper Dinesh Chandimal (62) for the fourth wicket before another 88 was put on for the fifth between him and Niroshan Dickwella, who made a rapid 52.
As if that was not enough, Karunaratne put on 59 for the sixth wicket with Dilruwan Perera who scored a polished 58.\
Karunaratne hit 19 boundaries and a six, improving on his previous best Test score of 186 made against the West Indies at Galle two years ago.
When on 143 he brought up his 3,000th run in his 44th Test. To add to Pakistan's woes, pace spearhead Mohammad Amir walked off the field after a recurring shin injury sustained late on Friday. He managed to bowl just three overs in the day.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)