Muthumudalige Pushpakumara led a Sri Lankan recovery in the second Under-19s' Test at Northampton.
Pushpakumara scored 125 not out in four hours, including a stand of 129 for the seventh wicket with Kausbal Lokuarachchi after the tourists had collapsed to 74 for six in their second innings.
Sri Lanka, who trail 1-0 in the three-match series, finished the day on 268 for eight. They lead by 291 runs, so England's batsmen have a mountain to climb on a pitch already generating a response for Sri Lanka's four-man spin attack.
England were all out for 263, their last four wickets falling for the addition of 41 runs at the start of the day. Ian Pattison of Durham was ninth out after battling his way to 39 in over three hours.
Slow left-arm spinner Ranil Dhammika secured two more scalps to finish with five for 59 from 37 overs, while Pushpakumara accounted for Justin Bishop and Pattison with his off-breaks.
When Sri Lanka batted the Surrey seamer Tim Murtagh used the new ball to good effect, taking the wickets of Ian Daniels, Thilina Kandamby and Jehana Mubarak for just seven runs in six overs.
David Harrison trapped Malintha Gajanayake lbw, and opener Nimesh Perera was beautifully caught at extra cover by Ian Bell, leaving Sri Lanka just 74 runs ahead with five wickets gone.
Then captain Kaushalya Weeraratne was clean bowled by Bishop. It was then that Lokuarachchi arrived to join Pushpakumara.
Just after tea Lokuarachchi was missed at slip off Monty Panesar, who later bowled him to break the dangerous partnership.
Panesar also dismissed Dhammika before the close, but Sri Lanka remain in the driving seat with Pushpakumara still at the crease.