England need three wickets on the final day to record their first series win in Sri Lanka in 17 years after play was abandoned on Saturday due to rain and poor light.
When play was curtailed at two hours before stumps were scheduled at Pallekele International Stadium the hosts were 7-226 and still requiring 75 runs to square the three-match series.
The game was evenly poised at tea with Sri Lanka on 5-219 but soon after the resumption the momentum swung to England.
Only 20 deliveries were possible, but they were enough for England to take control.
Just three balls after tea Angelo Mathews was trapped leg before wicket by Moeen Ali for a resolute 88.
The former captain faced 137 deliveries and hit six fours during his knock under tremendous pressure.
England weren't able to create any chances off Mathews until he got out, and there was a bit of lapse of concentration as Mathews attempted to work Ali on the leg-side but failed to connect.
Mathews reviewed the decision to no avail.
Sri Lanka also tamely lost Dilruwan Perera lbw for two as spinner Jack Leach (4-73) celebrated his fourth wicket.
Sri Lanka have only chased 300-plus targets on three occasions, and may yet need to rely on more bad weather to escape with a draw.
Playing without their injured captain and leading batsman Dinesh Chandimal, Sri Lanka were soon in trouble, losing three wickets for 26 as Leach ran through the top order.
Mathews then was involved in two vital stands with his old school mates. He added 77 runs for the fourth wicket with Dimuth Karunaratne (57) and a further 73 runs for the fifth wicket with Roshen Silva (37).
Wicketkeeper Niroshan Dickwella then joined Mathews and smashed run a ball 23, adding 45 runs for the sixth wicket.
England won the first test match by 211 runs in Galle earlier this month.

