England took two wickets late on a rain-marred opening day against Sri Lanka after the tourists threatened to make an ideal start to the first Test at Sophia Gardens.
Sri Lanka, who closed on 133-2, were 93 for nought before they lost captain Tillakaratne Dilshan (50) and former skipper Kumar Sangakkara (11).
Tharanga Paranavitana was 58 not out and Mahela Jayawardene unbeaten on four after rain meant only 48 out of a scheduled 90 overs were possible on the first day of this three-Test series.
Left-handed opener Paranavitana, who cut Chris Tremlett for four to bring up his fifty, has so far batted for more than three-and-a-half hours, facing 154 balls including six boundaries.
Dilshan reined himself in after winning the toss but still made fifty off 92 balls, with seven fours, and during his innings he became the ninth Sri Lanka batsman to score 4,000 Test runs.
But two balls after reaching his half-century he tried to cut a ball from off-spinner Swann that was too close to him and played on.
Swann, who often takes a wicket early in his spell, finished the day with impressive figures of 1-12 in eight overs.
Dilshan’s departure ended an opening stand of 93 that gave Sri Lanka a solid foundation in what was their first Test outside the subcontinent since they toured the West Indies in 2008.
Former captain Sangakkara then got off the mark with a typically elegant cover-driven four off James Anderson.
But not long afterwards the Lancashire seamer had his man when England appealed for caught behind against Sangakkara.
Pakistan’s Aleem Dar, widely regarded as one of the world’s best umpires, ruled in the batsman’s favour and that led England, who were convinced Sangakkara had edged through to wicket-keeper Matt Prior, to call for a review.
Rod Tucker took his time and, although replay pictures did not appear totally conclusive, there appeared to be enough sound for the Australian third umpire to give Sangakkara out.
Earlier, Anderson produced a miserly opening spell of seven overs for seven runs, including two maidens, but was unable to induce a chance despite repeatedly beating the bat.
Stuart Broad, playing his first Test since a stomach injury in November cut short his Ashes involvement, was more expensive.
His first four overs cost 18 runs, with Paranavitana glancing him for four and Dilshan off-driving him in textbook fashion for a boundary.
And when Broad returned, Dilshan punished a wide ball with a flashing square-cut that sped to the rope.