South Africa 177 for 8 (Bavuma 43) beat England 176 for 9 (Roy 70, Morgan 52, Ngidi 3-30) by 1 run
East London: South Africa defeated England by one run after an astonishing finish to the first T20 international at Buffalo Park.
Chasing 178, England looked poised for victory after Jason Roy scored a rapid 70 and captain Eoin Morgan added a vital 52 that included some clutch late boundaries.
The tourists only needed seven from the last seven balls but Morgan holed out to long on to set up a tense finale before a tremendous last over from Lungi Ngidi (3-30) saw him remove Tom Curran and Moeen Ali.
Adil Rashid was left needing three from the final delivery for victory or two to force a super over, but he could only manage one as the returning Dale Steyn and captain Quinton de Kock combined for a runout that sparked joyous scenes in East London.
Earlier, South Africa were well set for a huge total before England recovered to limit them to 177-8.
Roy's superb innings - which saw him become the country's first player to score three consecutive T20I fifties - took just 38 balls with seven fours and three sixes as Morgan's men made a strong start to their reply.
Morgan appeared ready to put the finishing touches on a strong run chase but a dramatic conclusion meant it was South Africa who took a 1-0 lead in the three-match rubber, with their opponents finishing agonisingly short on 176-8.
England are now in danger of losing their first T20I series since July 2018 and this morale-denting defeat was an unwelcome start to a year that builds towards the T20 World Cup in October.