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.