England captain Joe Root scored an unbeaten 72 on day one of his side’s two-day warm-up match against a Cricket South Africa Invitation XI in Benoni.
Root, Joe Denly (60 not out) and opener Dom Sibley (58 not out) all retired after passing their half-centuries.
Jonny Bairstow, playing as a specialist batsman, made only 13 on his return to red-ball cricket with England.
Zak Crawley (28 not out) and Sam Curran (18 not out) guided the tourists to 309-4 at the close.
England are set to spend Wednesday in the field and will hope that pace bowlers Stuart Broad and Jofra Archer are able to take part after both being affected by illness.
James Anderson will bowl for England for the first time since the opening Test of the Ashes in August after recovering from a calf problem.
All-rounder Ben Stokes is missing the warm-up match after being named on Sunday but has now joined the touring party.
England face South Africa in a four-Test series, with the first match at Centurion starting on 26 December.
“You can’t really beat time at the crease and there’s another three-day game coming up so there’ll be opportunities there as well,” said Sibley, who has made 38 runs in his three Test innings so far.
“I’ve got to start getting some scores but hopefully Boxing Day will be my day, if I play.”
After Rory Burns (16) fell top-edging a hook shot to fine leg, Sibley patiently ground his way to 58 off 140 balls.
Denly hit 10 fours and one six in a fluent knock, while Root, who scored 226 against New Zealand in his last Test appearance, was again in fine touch, scoring freely in making 72 off 86 balls.
Ollie Pope fell lbw to Matthew Arnold for 20, wicketkeeper Jos Buttler was caught in the slips for 15 and Bairstow, who was dropped for the Test tour of New Zealand, hit a full toss straight to mid-on.
But Crawley, who made his debut in the second Test against New Zealand, and all-rounder Curran comfortably played out the final hour.