Cheteshwar Pujara and Ajinkya Rahane couldn't add too much to their overnight tally, as they fell for 132 and 133 respectively in the morning session of Day 2.
Ravichandran Ashwin walked out to bat at No.6, survived early period of tribulation and went on to bat for long.
Hardik Pandya threw his bat around in a run-a-ball knock of 20.
Malinda Pushpakumara removed Rahane early and then brought another important breakthrough for Sri Lanka by dismissing Hardik Pandya.
Ashwin went on to score a 50 in the second session, thereby achieving the double of 200 0 runs and 200 wickets in Tests - the fourth fastest to do so
Wriddhiman Saha fought on after Ashwin's exit to score a fifty of his own.
In the final session, Ravindra Jadeja brought up his half-century before Virat Kohli opted to declare on 622/9.
Ravichandran Ashwin dented Sri Lanka by removing both openers - Upul Tharanga and Dimuth Karunaratne - early. Hosts ended the day on 50/2.