The hosts finished the day on 310-6 after outstanding catching kept the touring side in contention on Friday.
A late cameo from Jonny Bairstow, who oozed confidence after his first-Test 140, steadied an innings that had been in danger of falling away but he departed for 48 just before the close as Sri Lanka fought back on a slow pitch in Durham.
Both England openers missed landmarks in chilly conditions at Chester-le-Street where England have won all five of their previous Tests.
But the opener only reached 15 before jabbing at a wide delivery from Suranga Lakmal and he was well caught by a diving Dimuth Karunaratne in the slips.
Cook's opening partner Alex Hales also had a personal milestone in mind and came close to a maiden Test century.
Hales, who made 86 in the first Test, played fluently with a judicious mix of attack and defence before falling on 83 to a superb catch by Angelo Mathews at slip off the bowling of spinner Milanda Siriwadana.
The Yorkshireman chalked up an effortless fifty from 70 balls and looked on course for a century but was surprised on 80 by a quicker ball from Nuwan Pradeep that got up off a length.
The bounce forced Root into a hurried shot that was easily caught by Kaushal Silva. England's most prolific batsman has now failed to reach three figures seven of the last eight times he has recorded a half-century.
By the close, Moeen had reached an untroubled 28 with Chris Woakes unbeaten on eight. Pradeep was Sri Lanka's most successful bowler with three for 69.
England won the first Test in the three-match series by an innings and 88 runs.