Paceman Nuwan Pradeep clinched his maiden five-wicket haul as Sri Lanka clawed back at a runaway India on day two of the first Test in Galle on Thursday.
Pradeep (5-88) dismissed Cheteshwar Pujara for 153, triggering a batting collapse which saw the tourists lost four wickets in a lively first session after resuming at 399-3.
At lunch, the top-ranked visitors were 503-7, with Test debutant Hardika Pandya batting on four alongside Ravindra Jadeja (eight).
Pujara, whose 253-run stand for the second wicket with opener Shikhar Dhawan (190) put India on track for a huge first innings total, was caught behind off Pradeep, the pick of Sri Lankan bowlers.
Pujara struck 13 fours in his 265-ball knock to match his previous Test best of 153 against South Africa at Johannesburg in 2013.
Ajinkya Rahane (57) looked solid but was sent back to the pavilion after Madhushanka Karunaratne dived for a low catch on his right side off fast bowler Lahiru Kumara.
Ravichandran Ashwin and Wriddhiman Saha struck back with a sixth-wicket stand of 59, but India's counter attack unravelled as Sri Lanka dismissed the duo in the space of six balls.
Ashwin (47) fell short of a well-deserved half-century while Saha (16) became the first victim of Sri Lankan captain Rangana Herath (1-125).