Roshen Silva steered Sri Lanka into a lead with a classy half-century after England looked destined to take a healthy advantage on day two of the second Test in Pallekele.
Sri Lanka were in trouble on 165-6 on Thursday but led by 46 at stumps after recovering to 336 all out.
Dimuth Karunaratne (63) and Dhananjaya de Silva (59) made half-centuries and Roshen top scored with a superb 85 after receiving support from the tail.
Jack Leach (3-70) and Adil Rashid (3-76) took three wickets apiece, while the tourists were also boosted by five penalty runs - taking their first-innings total up to 290 – awarded after Roshen was adjudged to have deliberately run short.
Sri Lanka added 84 runs for the last two wickets as they attempt to level the three-match series, with nightwatchman Leach successfully seeing off one over before the close.
Day 2, Stumps: Sri Lanka gain a first innings lead of 46 runs. SL 336 v ENG 290, 0/0 (1.0 Ovs) Roshen Silva 85, Dimuth Karunaratne 63, Dhananjaya de Silva 59 : Jack Leach 3/70, Adil Rashid 3/75. #SLvENG pic.twitter.com/0A63Zd7l9T— Sri Lanka Cricket (@OfficialSLC) November 15, 2018
Moeen Ali (2-85) struck in the third over of the day after Sri Lanka resumed on 26-1, Malinda Pushpakumara (4) giving Rory Burns a simple catch at midwicket.
Karunaratne played with great application for a deserved half-century and it took a moment of brilliance from Ben Stokes to run the opener out with a direct hit when the all-rounder only had one stump to aim at.
Sri Lanka were 139-4 at lunch after Stokes demonstrated his prowess in the field again with a brilliant instinctive one-handed catch at first slip when Leach drew an edge from Kusal Mendis (1).
Dhananjaya pulled Stokes for four to bring up his half-century and played with finesse before he was caught behind off Rashid, who generated huge turn to remove Angelo Mathews (20) in the same manner.
Roshen played with increasing authority in a tricky situation, but Sri Lanka were facing a big first-innings deficit when Niroshan Dickwella (26) was trapped leg before by Joe Root.
Dilruwan Perera became Leach's third victim just two balls after Roshen reached his fourth Test half-century at the start of the final session, but Akila Dananjaya offered support in a ninth-wicket stand of 56.
There was confusion when umpire Marais Erasmus deemed Roshen ran short on purpose at the non-striker's end before returning to other, as he and Dananjaya looked unsure if the ball touched the boundary ropes at third man.
He took that on the chin and dished out more punishment of his own, lofting Moeen for six before Rashid finally dismissed him to end the innings after Dananjaya fell for a brisk 31.
Leach played out an over from Dilruwan with confidence as Burns watched on at the other end, ensuring no further damage was done on a frustrating day for Root's side.
|Hummels showed courage to return to Dortmund - Zorc|
|Del Potro suffers another cruel injury blow|
|Sarri: Chelsea had to accommodate Hazard|
|Ecuador v Chile: Gomez not to blame for ´crisis´, claims FEF boss Egas|
|Ferrari to meet F1 officials for review of Vettel penalty|
|Raul, Morata and Courtois - Llorente the latest player to cross Madrid divide|
|Imperious Warner smashes highest score of World Cup|
|Goga Bitadze laughs off Zion Williamson media snub|
|Sarri out to prove sceptics wrong|
|Nadal books in for Wimbledon preparation at Hurlingham|
|Juventus ´love´ Pogba and want Rabiot - Paratici|
|Hartley left out of England training squad|
|Manchester City confirm Zinchenko extension|
|Atletico agree deal to sign Llorente from rivals Madrid|
|Ten Hag extends Ajax contract|
|Juventus appointment ´crowning moment´ of Sarri´s career|
|Juve boss Sarri wants to help Ronaldo break Serie A record|
|NBA Draft 2019: Zion Williamson backed to become ´world´s best´|
|Khan pondering boxing retirement|
|Juventus sell Orsolini to Bologna for €15m|
|Only Neymar knows his future - Douglas Costa|
|Championship fixtures 2019-20: Derby start at Huddersfield, Fulham visit Barnsley|
|FFA outlines plan for national second division|
|Berizzo: Paraguay dropped two points against Argentina|
|All change in Serie A: The task awaiting Sarri, Conte, Giampaolo and Fonseca|
|Rumour Has It: Real Madrid to offer €130m and James or Bale for Neymar|
|Scherzer overcomes broken nose to inspire Nationals|
|Messi: We´re convinced we will beat Qatar|
|A football genius and Lionel Messi – Newcastle poke fun at Argentina great and hail Almiron|
|Argentina lucky to be alive at Copa America – Scaloni|
|Mexico 3 Canada 1: Guardado brace preserves Martino´s 100 per cent record|
|Lightning´s Nikita Kucherov caps off season with Hart Trophy|
|Argentina 1 Paraguay 1: Messi scores but Copa America exit looms|
|World Rugby scraps Nations Championship plans|
|Sanchez left with ´bad taste´ after Qatar´s loss to Colombia|
|Salah among world´s best three players – Elmohamady|
|NBA Draft 2019: Three players with boom or bust potential|
|Colombia 1 Qatar 0: Zapata heads in late winner|
|NBA Draft 2019: Five second-round sleepers|
|NBA Draft 2019: Three players who will be selected too early|
|NBA Draft 2019: Six things we learned from Zion Williamson´s interview|
|NBA Draft 2019: What will Warriors do with pick 28?|
|Injured Del Potro withdraws at Queen´s, Lopez into last eight|
|We´ll wait and see - Jorginho agent not ruling out Juventus move|
|Women´s World Cup Review: Argentina and VAR dump Scotland out as England top Group D|
|Lopez strongly denies match-fixing allegations|
|Defending champion Coric comes through Halle thriller|
|Australia v Bangladesh: Carey and co target dangerman Shakib|
|Euro U21s Review: Fornals stunner gets Spain off the mark, Poland shock Italy|
|Argentina make Women´s World Cup history with stunning Scotland comeback|
|Sevastova cruises past Tomljanovic at Mallorca Open|
|Celtic could face Nomme Kalju or Shkendija in Champions League qualifying|
|New Zealand skipper Williamson hails De Grandhomme innings|
|Inter complete Politano deal|
|Coutinho unsure over Barcelona future|
|Luis Enrique grateful for privacy after leaving Spain role|
|Bayern looking forward to signing Sane, claims Lewandowski|
|Every win will be yours – Spain captain Ramos pays tribute to Luis Enrique|
|Masterful Williamson nudges South Africa closer to World Cup exit|
|Unfortunate Del Potro suffers another knee injury|
|F1 Raceweek: Vettel under pressure - French GP in numbers|
|Police arrest man on suspicion of manslaughter over Sala death|
|Baines signs Everton extension|
|AC Milan appoint Giampaolo as head coach|
|Is Mats Hummels still an elite defender?|
|Barcelona to face Napoli in first LaLiga Serie A Cup|
|Pant cleared to join India squad at World Cup after Dhawan blow|
|Ancelotti wants James Rodriguez, confirms Napoli chief De Laurentiis|
|Uruguay v Japan: Laxalt expects tough clash in Porto Alegre|
|Hummels set to join Gotze in returning to Dortmund|