Opener Sam Robson hit his maiden Test century before Sri Lanka fought back with four late wickets on the second day of the second Test at Headingley, on Saturday.
England were 320 for six, a lead of 63 at stumps on Day 2.
- Scorecard
Cook went in the fourth over of the day when he edged Prasad to Kumar Sangakkara at first slip, his 23rd innings without a Test hundred dating back to May 2013.
Robson and Ballance were hardly troubled but Ballance had two escapes when umpire Billy Bowden's lbw decision off Rangana Herath was overturned on review and when he was put down at short leg off Angelo Mathews.
Joe Root and Moeen Ali were also dismissed cheaply as skipper Mathews and Shaminda Eranga led the Sri Lanka recovery with two victims each.
England lost four wickets for nine runs near the close but Matt Prior and Chris Jordan were still there on three and four respectively, even though both were dropped as well.
Australian-born Robson, 24, played patiently and looked self-assured in his second Test appearance for his adopted country, reaching his century with a drive off Dhammika Prasad.
Robson's magnificent innings was eventually ended by the third ball after the drinks break when he was bowled by Nuwan Pradeep.
The lively Pradeep also caused Bell problems, beating his outside edge on more than one occasion but the 32-year-old eventually regained his composure to bring up his 41st Test half-century.
Eranga had bowled well with little reward but eventually got Bell's prize wicket, caught down the leg side by wicketkeeper Dinesh Chandimal.
Root (13) followed soon after with a timid edge through to Chandimal before Ali (2) became Eranga's second victim and Chandimal's fourth of the innings.
Sri Lanka's late burst halted England's chance of building the large first innings lead that had looked inevitable for much of the day.
Image: Sam Robson of England salutes the crowd as he makes his way back to the pavilion after his dismissal.
Photograph: Dave Thompson/Getty Images