Kevin Pietersen continued his return to form by hammering 85 but captain Andrew Strauss failed again as England took a firm grip on the third day of the third and final Test against Sri Lanka on Saturday.
The home team, replying to Sri Lanka's 184, reached the close on 195 for four after yet another rain-affected day at the Rose Bowl.
Pietersen, who also made 75 in the second-Test draw at Lord's, missed out on his 18th Test century when he fell just before stumps were drawn.
Ian Bell was unbeaten on 39 and night-watchman James Anderson nought not out.
Alastair Cook made a record-equalling 55 but Strauss's weakness against left-armers showed up again when he fell for three to seamer Chanaka Welegedera.
Sri Lanka look as if they will struggle to claim the victory they need to draw the series after England won the first Test in Cardiff, with bad weather having ruined every day of the game in Southampton.
Pietersen made his intentions known from the outset with a powerfully-driven boundary that went for four through mid-on after ricocheting off the stumps at the non-striker's end.
He went from 36 to 44 with two elegant boundaries through mid-wicket and mid-off that summed up his three-hour stay at the crease.
Pietersen's 14th and final four took England past Sri Lanka's total and was another majestic boundary driven straight down the ground.
Strauss was dismissed by Welegedera for the third consecutive innings, edging to Tharanga Paranavitana at first slip.
The captain, who has scored just one test century in two years, angrily thumped the bat with his glove after his dismissal.
Strauss is not under pressure for his place but he should expect no respite, with left-armer Zaheer Khan expected to lead India's attack in the four-Test series starting next month.
Cook, who scored six centuries in his previous nine tests, reached 50 for the sixth consecutive time to match the England record held by Ken Barrington (1963), Ted Dexter (1962) and Patsy Hendren (1930).
Left-hander Cook was third man out after a stand of 106 with Pietersen, edging Dilhara Fernando to gully with a rare loose shot outside off stump.
The in-form Jonathan Trott (4) also chased a wide ball from Suranga Lakmal who was bowling from around the wicket, leaving England perilously placed at 14 for two before Pietersen and Cook came together.
Pietersen was caught behind off Thisara Perera when it looked like he would go on to three figures.
Earlier, Sri Lanka resumed on 177 for nine and Stuart Broad took the last wicket by having Welegedera caught at short extra cover by Eoin Morgan for seven.
Fernando made a Test-best 39 not out.