Sri Lanka claimed four late wickets in quick succession to seize the initiative back from India after a rain-shortened opening day of the second Test.
India openers Virender Sehwag and Gautam Gambhir combined for an opening stand of 167 that put the visitors on top, and seemingly en route for redemption after a massive loss in the first Test.
However, once play resumed after a long rain break, Sri Lanka spinner Ajantha Mendis (2-74) and seamer Chaminda Vaas (2-57) won back the advantage by reducing India to 4-214 at stumps at Galle International Stadium.
India captain Anil Kumble won the toss and elected to bat, and Sehwag (128 not out) and Gambhir (56) ripped the bowlers apart with some positive batting and took India to 151-0 at lunch off just 29 overs. Gambhir also received a reprieve when dropped on 13.
Heavy rains during the break resulted in more than three hours being lost.
Sehwag resumed his charge after the stoppage, hoisting a Vaas delivery for six over long-on and driving him straight back to the boundary to reach his 15th Test hundred.
Mendis broke the openers' assault by trapping Gambhir lbw. Gambhir challenged his dismissal under the new law which allows a player to seek a video review of umpiring decision, but third umpire Mark Benson of England agreed with West Indian Billy Doctrove on the field that he was out.
With the breakthrough, four wickets fell for just 11 runs and India were soon reduced to 4-178.
India's star batsmen Rahul Dravid (2), Sachin Tendulkar (5) and Sourav Ganguly (0) were all dismissed cheaply.
Dravid was caught at silly mid-on by Malinda Warnapura off Mendis, Vaas snared the dangerous Tendulkar lbw and later had Ganguly caught behind.
Sehwag then coupled with V.V.S Laxman to begin rebuilding India's innings, and they shared 36 runs unbeaten for the fifth wicket.