Nigeria thought they had booked their place in the AFCON final when Victor Osimhen tapped home in the 85th minute to add to William Troost-Ekong’s second-half penalty, but referee Amin Omar was told to intervene.
A review of the goal showed South Africa’s Percy Tau had been fouled inside the penalty area at the start of the move and the score went from 2-0 to Nigeria to 1-1 when Mokoena made no mistake from 12 yards.
South Africa defender Grant Kekana also received his marching orders towards the end of extra-time before Nwabali made the difference to fire the 2013 winners into another final.
Osimhen had been declared fit ahead of the match but not even a minute had been played when he went down in pain after a tackle by Siyanda Xulu.
The Napoli forward was able to carry on but a quiet opening period occurred.
South Africa had spent the majority of the first quarter of an hour on the back foot but had penalty appeals waved away with 27 minutes played when Khuliso Mudau’s cross hit the elbow of Fulham defender Calvin Bassey, but his arms were tucked into his body.
It was South Africa firmly in the ascendancy now with Tau squandering a promising position with a weak shot straight at Nwabali before he almost got in again minutes later but his touch was too heavy.
Nigeria had struggled to create chances after a bright start, but Osimhen provided a reminder of his threat when he headed wide from a corner at the end of the first half.
The Nigeria talisman played a decisive role in the opener when he turned away from Aubrey Modiba with a wonderful pirouette, burst into the area and was brought down by Mothobi Mvala.
It was Troost-Ekong who stepped up for the spot-kick duties and his low effort went under the body of South Africa’s last-eight penalty shoot-out hero Ronwen Williams to break the deadlock with 67 minutes gone.
South Africa immediately pushed for a leveller and Makgopa flashed an effort wide before a dramatic finale to normal time occurred.
First, Williams dived at the feet of Ademola Lookman, who had been played through on goal, but Nigeria were able to celebrate in the 85th minute when Osimhen tapped home at the back post.
The Super Eagles’ jubilation would quickly turn to disbelief when referee Omar was told to review the goal by VAR.
Omar was shown a replay at the start of the move of Nigeria substitute Alhassan Yusuf catching Tau inside the area, which resulted in the goal being disallowed and South Africa awarded a penalty.
Amid the pandemonium, Mokoena kept his cool from the spot with 90 minutes on the clock, but it could have been even better for South Africa after Khuliso Mudau fired over with only Williams to beat in the sixth minute of stoppage time.