Half-centuries from under-pressure captain Andrew Strauss and opener Alastair Cook on day two left England in a strong position to push for victory in the second Test against Sri Lanka.
Having bowled the hosts out for 275 in the morning session - with four wickets falling for the addition of 37 runs - England enjoyed their best batting day of a difficult winter to reach stumps 121 behind on 154 for one.
Although Strauss did not provide the long-awaited hundred he wanted to halt speculation about his future as skipper, his diligent 61 was crucial in building strong foundations for a first Test win of 2012.
He battled hard in a first-wicket stand of 122 with Cook, the pair's first century partnership in nine innings, with the latter due to resume tomorrow on 77.
Sri Lanka began the day on 238 for six, with England hoping to make light work of the tail.
Although the second new ball was just nine overs old, James Anderson and Steven Finn drew blanks as Angelo Mathews, 41no overnight, nudged his way to an eighth Test fifty.
Swann was needed to get the ball rolling, drawing Suraj Randiv into a rash shot down the ground, where he was well held by the back-pedalling Kevin Pietersen.
It took Swann four more balls to remove Mathews, who popped a simple catch to Strauss at short mid-wicket to fall for 57.
Number nine Dhammika Prasad made 12 not out but England were ruthless in seeing off the last two men, Tim Bresnan benefiting from Rangana Herath's wild hack and Swann turning one sharply into Suranga Lakmal's stumps.
Swann finished with four for 75 and had handed England the momentum.
Strauss and Cook were left with an unwanted four-over stint before lunch and emerged unscathed, just.
Strauss got off the mark after three balls, sending a low thick edge through the cordon for four, and had a nerve-shredding moment just before the break when an attempted cut almost ricocheted into his stumps.
England were positive at the start of the afternoon session, both batsmen finding the ropes inside seven deliveries, and working hard for singles.
It took just eight overs for left-arm spinner Herath, man of the match in Galle, to be introduced.
England's tactics were much better against him this time, with the much-debated sweep shot put into storage and both batsmen playing safer shots with the turn.
Yet Herath still posed some hard questions.
Cook, on 20, turned him to short-leg where Lahiru Thirimanne almost took a wonderful low catch only for the ball to squirm loose.
Strauss had 23 when he was beaten by Herath, nicking one just short of Mahela Jayawardene at slip.
Cook nudged for two to bring up the 50 partnership in the 21st over and collected his third boundary to long leg when Herath dropped short.
Herath was turning the ball towards a seven-strong leg-side field, with four close catchers, but Strauss and Cook were keeping their heads.
Lakmal returned for a second spell, with Strauss welcoming the additional pace by nudging the first ball off his hip for two.
The England captain joined Cook in passing 40 with a neat three off Lakmal in the last over before tea.
It was not until the 39th over of the innings that Strauss unveiled the sweep and, even more surprisingly, it was caused no dramas.
Cook was also becoming more confident, reverse sweeping Herath to third man for four.
Both openers reached their half-centuries in the space of a couple of minutes, Strauss in 105 balls and Cook taking 164.
Prasad saw Strauss and Cook collect fours to the vacant third-man area in the same over but when Sri Lankan heads began to drop, Tillakaratne Dilshan struck.
Having edged the off-spinner short of slip two balls earlier, Strauss went to cut a ball too full for the shot and was smartly caught by wicketkeeper Prasanna Jayawardene.
Cook continued to compile watchfully for the remainder of the day, with new man Jonathan Trott (15no) offering typically cool-headed support at the other end.