Alex Hales, after his 86 in the first Test, continued to keep the Sri Lankan bowlers at bay and ensured there was no wobble in the England innings before he was dismissed for 83.
Joe Root and Hales collaborated for a 96-run stand to build for England in the second session. Root eventually fell for 80 in the final session.
Alastair Cook fell five short of reaching the 10000-run mark when he was dismissed for 15 after England opted to bat.
Suranga Lakmal took an outstanding catch to dismiss Nick Compton before England ended the first session on 83 for 2.
Jonathan Bairstow struck 48 but Sri Lanka fought back to peg England down to 310 for 6 on the first day.