Resuming on 310-6 overnight, Moeen Ali played an excellent innings as England declared on 498-9 half an hour before tea. James Anderson and Stuart Broad took early wickets as Sri Lanka closed on 91-8, facing a second successive three-day defeat.
Moeen Ali played some extremely classy strokes as well as he made his way to 155*, receiving able support from Chris Woakes who made 39.
It was a day of stark contrast to yesterday as Sri Lanka's fine catching was replaced by some terrible drops and poor misfields.
Ali gives England a commanding lead
Alex Hales (83) and Joe Root (80) yesterday had already provided England with a solid base and with Ali taking the crease this morning already on 28*, England already had the momentum to attack from. The all-rounder was a man in need of runs and he capitalised on his promotion to number 7. With Woakes seemingly happy to occupy the non-striker's end it allowed Ali to up England's run-rate.
The two all-rounders added 92 runs for the seventh wicket partnership but it was Ali who took all the plaudits as he scored his second test century, his highest test score and the fourth highest score by an England number 7 in test match cricket. His innings consisted of 17 fours and two sixes, with the highlight of those being a well hit six over deep midwicket to bring up his 150.
Woakes had already departed going for 39 runs off the bowling of Suranga Lakmal. Broad then went quickly scoring seven from nine deliveries before he edged to slips off the bowling of Nuwan Pradeep.
Steven Finn played a patient innings facing just 37 deliveries despite batting for 70 minutes before he went for 10 runs, caught and bowled by Rangana Herath. It was the off-spinner's 300th test wicket and one of few highlights in the day for Sri Lanka. Anderson finished his innings 10* as England declared 40 minutes before tea just shy of 500 runs.
England Bowlers Set Up A Potential Three Day Victory
Anderson got England off to a great start as Dimuth Karunaratne walked too far across his stumps and was bowled round his legs for just nine runs. It was then Broad's turn as he removed Kaushal Silva for 13 when the Sri Lankan opener edged behind to Jonny Bairstow. Anderson then took his second wicket as he had Dinesh Chandimal caught by Alastair Cook for 4.
Woakes was the pick of the bowlers, however, the all-rounder making the most of his chance due to the injured Ben Stokes. The Warwickshire bowler carried his excellent county form into the test arena as he finished the day with figures of 3-9 from 7 overs.
He first removed the Sri Lankan captain, Angelo Mathews was caught behind by a diving Bairstow for 3 runs. Woakes then followed this with the wicket of Kusal Mendis for a fighting, if disappointing, 35 as the ball leapt off a length and caught the shoulder of the bat, Anderson holding onto the catch. Woakes finished by removing Milinda Siriwardana for a 5 ball duck, the lower order batsman being deceived by a delivery that kept low and carried through to Bairstow.
Broad then took his second wicket when Herath misjudged the bounce of Broad's delivery and edged to Anderson in the slips for a combatant 12 from 46 deliveries before he ended the day on a high after a superb teamwork effort in the slips between James Vince and Root as he removed Shaminda Eranga for just 2.
Sri Lanka's changes to their team having clearly not worked and they will resume on 91-8 tomorrow.
England will resume tomorrow knowing that if they perform as they have today this could be a very quick end to the test match and the series.