Sri Lanka scored 381 and then had England under pressure before Joe Root brought some stability to the innings in Galle.
The hosts had their best batting innings this season, Angelo Matthews eventually succumbing for 110, before Niroshan Dickwella and Dilruwan Perera put on an 89-run stand which drove their team to a first-innings score that put pressure on the tourists.
Dickwella fell eight runs short of a century, while Perera’s 67 in support meant Sri Lanka put the batting misery which started on their tour to South Africa and carried into the first Test of this series, behind them for now.
James Anderson excelled on an unforgiving wicket for seam bowlers, finishing with figures of 6-40 in 29 overs, an heroic effort in stifling heat and humidity.
Sri Lanka’s left-arm seamer Lasith Embuldeniya soon had England in strife. He removed both openers before the score had surpassed five.
However, Root and Jonny Bairstow absorbed the early pressure and once they’d seen the shine off the ball, things became much more comfortable. They were brutal on Sri Lanka’s spinners as the day drew to a close, scoring at nearly six runs per over.
Their 93-run unbeaten stand means they’ll have the momentum going into day three on 98-2 (trailing by 283), and Sri Lanka will hope to strike early and expose a relatively inexperienced middle and lower order.