Cape Town: Ben Stokes fired the fastest double century for England, the second fastest in history, on day two of the second Test with South Africa in Cape Town.
Stokes, in his 21st Test, resumed on 74 and raced to 200 in 163 balls to beat Ian Botham's 220-ball record.
Jonny Bairstow (150) struck his maiden Test century and shared in a stand of 399, a sixth-wicket world record.
Stokes made 258 as England added 312 within 39 overs and declared on 629-6, South Africa reaching 141-2 in reply.
Only New Zealand's Nathan Astle has reached a Test double hundred more quickly, off 153 balls against England in 2002.
England, 1-0 up in the four-match series and resuming on 317-5, added 196 in 25 overs in a thrilling morning session.
Driving the ball fluently when given width outside the off-stump and ruthlessly pulling anything short, 24-year-old Stokes hit five fours in the opening two overs of the day and smashed spinner Dane Piedt for 16 in three balls.
He plundered 130 in the morning session, the most by any batsman in a pre-lunch session, moving from 150 to his double century in just 28 deliveries, before beating Virender Sehwag's landmark for the fastest Test 250.
Attempting a third successive six to equal Wasim Akram's world record of 12 for the highest number of maximums in a Test innings, he lofted to AB de Villiers at mid-on, who fumbled the catch but ran out the swashbuckling left-hander with a direct hit.
As so often happens after a team replies to a mammoth total, the beleaguered South Africans lost an early wicket, Stiaan van Zyl attempting a needless run to cover and was short of his ground as Bairstow whipped off the bails following a fine throw from Nick Compton.
The current world number one Test side, who have lost four of their past five matches, rallied before Stokes returned to the action and had Durban centurion Dean Elgar superbly caught by a diving Compton at point.
Star batsman De Villiers (25 not out) was dropped on five by Joe Root at second slip off James Anderson and began to look more assured in favourable batting conditions at a cloudless Newlands, sharing an unbroken 56 with Hashim Amla, who ended a run of 11 innings without a fifty and reached 64 not out.
Two of the three wickets to fall on a day when 453 runs were scored - a record in South Africa - were run outs, so a straightforward second successive victory for England is by no means guaranteed.
Brief scores
England - 629 for 6 dec (Stokes 258, Bairstow 150*, Hales 60, Root 50)
South Africa - 141 for 2 (Amla 64*)
Status - South Africa trail by 488 runs