South Africa won by just one run in the first T20I, despite a stunning 70 from Jason Roy, thanks to some fantastic death bowling from Lungi Ngidi.
After being inserted by England, Quinton de Kock got his side off to a flying start. By the time he was out for a 15-ball 31, including 15 from Tom Curran's opening over, he had already helped South Africa to 48 from just 4.1 overs.
Temba Bavuma and new batsman Rassie van der Dussen continued his good work, though neither was able to quite match the early tempo set by their captain. Nevertheless they brought up their fifty partnership from exactly five overs before taking the total past 100 during the 10th over.
England struck back in the second half of the innings though, claiming both set batsmen in consecutive overs thanks to some sharp catching. First to go was van der Dussen, with Bairstow taking a tough chance running in from square leg, and then Bavuma was well held at short fine leg by Moeen Ali as the opener looked to work Adil Rashid around the corner.
David Miller was next to go, for 16, as his lofted drive off Curran was held up by the wind and caught by Chris Jordan. Jordan then played his part with ball in hand, as he and Mark Wood conceded just eight runs from the final two overs, including four wickets. England's fightback left South Africa with 177/8 to defend.
Jos Buttler tried to replicate de Kock's lightning start, taking two boundaries from the opening over delivered by Steyn. But South Africa's returning veteran bowler had his revenge in his next over as Buttler mistimed a shot to mid-off. That wicket also took Steyn to the top of South Africa's all-time wicket takers in T20Is, going past Imran Tahir's 61 wickets.
That brought together England's ODI opening pair of Jason Roy and Jonny Bairstow, though the pair had batted only once together before in T20Is. On that occasion, agaisnt the same opposition at Taunton in 2017, their 110-run partnership for the second wicket proved just too little as South Africa won by three runs.
It looked for a while as though the partnership might have passed 100 in this match as well, with Bairstow playing the supporting role as Roy bludgeoned his way to a 22-ball fifty. That took him to equal second in the list of England's fastest T20I fifties, behind only Eoin Morgan's 21-ball effort against New Zealand in November 2019.
Bairstow was eventually trapped in front by Tabraiz Shamsi, the partnership ending having added 72 runs in 6.3 overs. The wicket did little to slow Roy though, and Eoin Morgan took up where Bairstow had left off providing him with support.
Beuran Hendrick's introduction changed the complexion of the game however, as a slower ball bouncer was top-edged by Roy, the opener dismissed for a 38-ball 70. Joe Denly followed in the next over, holing out off Phehlukwayo for 3, and Ben Stokes followed suit for a 7-ball 4.
That left Morgan and Moeen Ali with 26 runs needed from 14 balls. When Morgan found the boundary from three consecutive balls in the 19th over, taking him past fifty, it looked as though England had all but secured the win, but the England skipper was caught in the deep as he tried to make it four in a row.
With seven runs required from the final over, Tom Curran managed a scampered two before holing out himself. Moeen played and missed before replicating Curran with a quick two before being sent back to the dressing room. Adil Rashid managed to get bat on the final ball, dropping it into mid-wicket, but found the experienced head of Dale Steyn who under-armed a throw to de Kock to prevent the batsmen completing a second run.