The 22-year-old South Africa-born right-hander scored 117 from 111 balls - 54 per cent of Surrey's modest total of 216 all out - as Durham pegged back Surrey's breezy start through Chris Rushworth, with four for 44, and two apiece for Ben Stokes and Paul Collingwood.
Failing to bat out their overs, the hosts were skittled in 37.3 overs with Roy their eighth man out. But his innings, and indeed the match, was subsequently overshadowed by an injury to Durham all-rounder Stokes and then the persistent rain.
Stokes, back-pedalling at long-off, took a superb overhead catch to account for Roy but landed heavily on the outfield and lay prone for the next five minutes receiving treatment. Complaining of pain in his lower back, and seemingly unable at first to move his left leg, Stokes was transferred to a stretcher and carried from the ground.
The 22-year-old was subsequently taken to hospital by ambulance for scans. Durham were unable to confirm the outcome of the scans but Stokes seems certain to miss the LV= County Championship match between the sides which starts on Friday.
Batting first having lost the toss, Surrey looked set for a storming start despite the continual threat of rain. In-form Steven Davies, fresh from a century earlier in the week against Hampshire, saw his cameo ended on 16 when, in looking to turn a Rushworth delivery leg-side, he found a leading edge to be caught low down at mid-off.
Roy teamed up with Vikram Solanki to add 44 for the second wicket before the former Worcestershire bat, in looking to run one down to third man, edged one from Stokes through to the tumbling Phil Mustard.
Roy and Zander de Bruyn (24) posted a further 75 inside 15 overs until the introduction of wily swing bowler Collingwood knocked the stuffing out of the Surrey middle order. The former England stalwart snared De Bruyn leg before then, three balls later, sent Gary Wilson packing in identical fashion for a third-ball duck.
Collingwood was again in action at the Pavilion End when Zafar Ansari pushed toward backward point and set off for a single, only to be run out by Mark Stoneman's throw when Roy refused to run. Tom Jewell whipped across the line of a straight one from Rushworth to go lbw, before Roy scrambled a single to reach his 101-ball ton with 11 fours.
Surrey's acting skipper Gareth Batty departed to the next delivery as Stokes re-arranged his stumps then, with 200 on the board, Roy's 142-minute stay was ended by Stokes' acrobatic, but ultimately painful, catch in the deep. Jon Lewis hit 24 from 16 balls but the weather meant there was no chance for Durham to reply.