Sri Lanka dismissed three top-order England batsmen cheaply to take charge of the first cricket Test at the Galle International Stadium on Tuesday.
The tourists went to lunch on the second day struggling at 57-3 in their first innings after skipper Mahela Jayawardene's 180 lifted Sri Lanka to 318 earlier in the morning session.
Opener Alastair Cook was trapped leg-before by seamer Suranga Lakmal before a run had been scored, and Jonathan Trott was stumped off spinner Rangana Herath for 12.
Trott, who helped captain Andrew Strauss put on 40 for the second wicket, crashed to the ground after colliding with celebrating wicket-keeper Prasanna Jayawardene.
Strauss himself departed in Herath's next over for 26, given out leg-before by the TV umpire after on-field official Asad Rauf turned down a loud appeal by the Sri Lankans.
Ian Bell was unbeaten on 13, which included a six and four off consecutive deliveries from Herath, and Kevin Pietersen was on three.
Earlier, Sri Lanka added 29 runs to their overnight score of 289-8 before being dismissed 30 minutes after the start of play.
James Anderson conceded four boundaries in the day's first over as his attempt to bounce out tailender Chanaka Welegedara resulted in two edges off the bat and two rebounds off the helmet.
Welegedara helped Jayawardene take their ninth-wicket stand to 54 before he was bowled by Anderson for 19.
Anderson finished with a five-wicket haul when he ended Jayawardene's 394-minute knock through a catch by wicket-keeper Matt Prior.
The Sri Lankan captain hit 22 boundaries and three sixes in his 30th Test century which helped the hosts recover from a disastrous 15-3 on the opening day.
Anderson finished with five for 72, while debutant all-rounder Samit Patel claimed 2-27 with his left-arm spin.
England's two frontline spinners, Graeme Swann and Monty Panesar, failed to pick up a wicket.