Robson (127) put on 142 with Gary Ballance (74) and 87 with Ian Bell (64) - in his 100th test appearance - but not until struggling England captain Alastair Cook had been caught behind for 17.
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.
- Sports & Recreation
- Gary Ballance
- Ian Bell
- Alastair Cook
- Shaminda Eranga
- Angelo Mathews
- Kumar Sangakkara