Graeme Swann struck twice in the second session to deal body blows to Sri Lanka's desperate bid to save the second and final test against England on Friday.
The England off-spinner removed former captains Tillakaratne Dilshan (35) and Kumar Sangakkara (21) to leave Sri Lanka, who lead the two-match series 1-0, reeling on 139 for four at the fourth day's tea break.
Skipper Mahela Jayawardene (20) and Thilan Samaraweera (11) were in the middle with Sri Lanka still trailing England by 46 runs.
Dilshan, who has been fined 10 percent of his match fee for excessive appealing, was not happy after he was given out, caught at slip by James Anderson.
The batsman asked for a review and with no Hot-Spot in use, there seemed no conclusive evidence to prove otherwise and the field umpire's decision stood.
Swann then removed Sangakkara who had struggled for nearly two hours before edging a catch behind the wicket to Matt Prior.
Scores: Sri Lanka 275 (M Jayawardene 105, T Samaraweera 54, A Mathews 57; G Swann 4-75, J Anderson 3-62) and 218-6 (M Jayawardene 55 n.o., Swann 4-82) v England 460 (A Strauss 61, A Cook 94, J Trott 64, K Pietersen 151; R Herath 6-133).