Sri Lanka built a 288-run lead with three wickets in hand on day three of the third Test with England at Trent Bridge.
Resuming at 45-1, Sri Lanka reached 100 when Upul Tharanga looked to attack once too often to Monty Panesar and was caught for 46.
Kumar Sangakkara had been growing in confidence as he moved past his second half-century of the series but on 66, off 133 balls, he fell to Andrew Flintoff, to leave Sri Lanka 143-3.
Five runs later Sanath Jayasuriya fell leg before wicket to Panesar for four and Sri Lanka was in trouble.
However, captain Mahela Jayawardene maintained the fight and his patient 45 from 84 balls helped get Sri Lanka to 191, before he was caught behind by Liam Plunkett.
Tillakaratne Dilshan and Chamara Kapugedera kept the momentum rolling. Dilsha was out at 223 for 32 while Kapugedera was unbeaten on 50 at stumps, his maiden half-century in only his second Test.
Chaminda Vaas was at the wicket with Kapugedera on 24, having added 48 runs for the eighth wicket.
Sri Lanka went into the day hoping to secure a 250-run lead to get Muttiah Muralitharan a suitable target to bowl to and will be well pleased with the position of advantage it reached at 286-7 by the end of the day.
Panesar was the best of the home bowlers with 3-73 from 36 overs while Flintoff used himself sparingly, bowling only 13 overs so far in the innings for 1-38.