Colombo: Cheteshwar Pujara hit an unbeaten 128 and Ajinkya Rahane 103* to steady India's innings after Sri Lanka jolted the visitors with two crucial strikes on the opening day of the second Test on Thursday.
India, who lead the three-match series 1-0, were well placed at 344 for three at stumps after winning the toss and choosing to bat in Colombo. Pujara, playing his 50th Test, was batting alongside Rahane.
The pair put on an unbroken 211s-run stand for the fourth wicket after the hosts lost opener Lokesh Rahul for 57 and skipper Virat Kohli for 13 early in the second session.
This was Pujara's third consecutive century against the host and 13th Test century, he struck ten boundaries and a six.
On other hand, Rahane scores ninth Test hundred with 12-fours.
Rahul, who scored his eighth Test fifty on his return from a viral fever, was run out after a mix-up with Pujara.
Veteran spinner Rangana Herath sent Kohli trudging back to the pavilion with a tossed-up delivery that got the edge of the captain's bat to be caught at slip.
Pujara then ground out the runs to register his 16th fifty in his milestone Test at the Sinhalese Sports Club Ground.
In the morning session, off-spinner Dilruwan Perera had Shikhar Dhawan trapped lbw for 35.
Debutant left-arm spinner Malinda Pushpakumara was still searching for his first Test scalp. The hosts need at least a draw to stay alive in the series.
India - 344/3 (Pujara 128*, Rahane 123*, Rahul 57)