An utterly dominant India declared their first innings closed at 622 for nine after the tea interval on the second day of the second test against Sri Lanka on Friday.
Cheteshwar Pujara top-scored for the tourists with a composed 133, while Ajinkya Rahane struck 132. Ravichandran Ashwin (54), Wriddhiman Saha (67) and Ravindra Jadeja (70 not out) also scored half-centuries.
Rangana Herath was the pick of the Sri Lankan bowlers, claiming 4-154, while debutant Malinda Pushpakumara took 2-156.
Earlier, Wriddhiman Saha helped himself to an unbeaten fifty as India continued to pile on the runs to reach a commanding 553 for seven at tea on day two of the second test on Friday.
Unable to call on lone frontline paceman Nuwan Pradeep due to a hamstring injury, Sri Lanka dismissed overnight centurions Cheteshwar Pujara and Ajinkya Rahane in the morning session but India's lower middle order kept swelling their total at the Sinhalese Sports Club Ground.
Saha was batting on 59 at the break, a patient knock that included four boundaries, with Ravindra Jadeja on 37 at the other end.
A jaded Sri Lankan attack faced an unenviable task when India resumed on 344-3 with Pujara and Rahane looking to punish the home attack further.
Karunaratne grabbed an early breakthrough, however, using a review to dismiss Pujara leg before wicket for 133.
Bowling the second over of the day, the seamer brought one back to hit Pujara's thigh but his leg before appeal was turned down by umpire Bruce Oxenford.
The bowler consulted skipper Dinesh Chandimal, who reviewed the decision, and replays suggested the ball would have gone on to hit the top of leg stump.
Pujara returned to the pavilion having batted for three hours and 20 minutes, hitting 11 boundaries and a six in his second century of the series.
An advancing Rahane perished trying to hit debutant Malinda Pushpakumara out of the ground, completely missing a flighted delivery with wicketkeeper Niroshan Dickwella completing an easy stumping.
Rahane, who added 217 runs with Pujara, hit 14 boundaries and faced 222 balls during his composed knock.
Ravichandran Ashwin took over the scoring duties, hitting five boundaries before bringing up his 11th test half-century with a six off Rangana Herath.
Ashwin, however, was clean bowled on the very next ball from the left-arm spinner, trying to play the cut shot and missing the line.
Pushpakumara dismissed Hardik Pandya for 20 to pick up his second wicket but Saha and Jadeja added 57 runs for the still-flourishing eighth wicket stand to consolidate India's position.