Alastair Cook was made to wait for his 10,000th Test run on day one of the second Investec Test at Emirates Riverside, while opening partner Alex Hales missed out on a maiden Test ton.
England captain Cook needed to notch 20 to become the first man from his country and youngest overall to score 10,000 runs, but was caught at slip for 15, leaving the left-hander five runs short of the milestone.
Hales, meanwhile, was on course to be the first Englishman to score a century in all three formats of international cricket - until he clipped to a leaping Angelo Mathews in the cordon when on 83, the second time in as many innings the Nottinghamshire player has fallen in the eighties.
Hales wasn't the only England batsman to fall disappointingly short of a hundred, as Joe Root departed for 80 - the first of three wickets to fall in the final session as the hosts slipped from 219-3 to 310-6 by the close.
Sri Lanka's evening session success came thanks to some sensational fielding with Lahiru Thirimanne taking a terrific catch to remove James Vince (35) at short cover - a third impressive effort on the day after Mathews' earlier grab and Suranga Lakmal's terrific tumbling catch at deep square leg to dismiss Nick Compton (9)
Watch continued live coverage of the second Investec Test between England and Sri Lanka from 10.30am, Saturday, Sky Sports 2.