England will play four Tests against South Africa, followed by three ODIs and as many T20Is.
London: England introduced four uncapped players their ODI squad while Jofra Archer, Jos Buttler, Ben Stokes and Mark Wood returned to the shortest format squad for South Africa tour.
Worcestershire seamer Pat Brown, Somerset batsman Tom Banton and the Lancashire duo of Matthew Parkinson and Saqib Mahmood are included in the ODI squad for the first time.
Moeen Ali and Jason Roy return in both white-ball formats after being rested for the New Zealand tour, but there was no room in the T20I squad for Joe Root.
Archer, Buttler, Stokes and Wood are rested for the ODIs. This will be the first time that England will play in the 50-over format since their memorable ICC Men's World Cup triumph in July. Eight players remain from the World Cup squad.
Five players, who played in England's 3-2 victory over New Zealand in November, miss out on selection - Tom Banton, Sam Billings, Lewis Gregory, Saqib Mahmood and James Vince.
"These two squads were selected with an eye on the T20 World Cup in Australia in 2020. In the T20s, a number of players who were rested for the successful 3-2 victory in New Zealand return to the squad: Jos Buttler, Jofra Archer, Ben Stokes, Moeen Ali and Jason Roy," National Selector Ed Smith said in an official statement.
"We want to expand the pool of players who can perform successfully for England, while also helping the team to peak for major tournaments," he added.
England ODI squad: Eoin Morgan (c), Moeen Ali, Jonny Bairstow, Tom Banton, Pat Brown, Sam Curran, Tom Curran, Joe Denly, Chris Jordan, Saqib Mahmood, Dawid Malan, Matthew Parkinson, Adil Rashid, Joe Root, Jason Roy, Chris Woakes.
England T20I squad: Eoin Morgan (c), Moeen Ali, Jofra Archer, Jonathan Bairstow, Jos Buttler, Pat Brown, Sam Curran, Tom Curran, Joe Denly, Chris Jordan, Dawid Malan, Matt Parkinson, Adil Rashid, Jason Roy, Ben Stokes, Mark Wood.
England will play four Tests against South Africa, followed by three ODIs and as many T20Is. The first Test will be played at Centurion from December 26.
The ODI series against South Africa starts on February 4 in Cape Town.