They had most of their joy down the left flank and it was Arsenal’s Alex Iwobi who provided a cross from the wing for Chukwueze to score from close range for his first international goal.
Bafana Bafana did not create a chance of note in the opening 45 minutes and they only marginally improved the second half.
Oghenekaro Etebo’s free-kick was brilliantly tipped onto the bar by the keeper while Iwobi fired over the bar.
Stuart Baxter’s side equalised in the closing stages through Bongani’s Zungu’s header from a free-kick.
The goal was initially flagged off-side but VAR – introduced for the quarter-finals onwards - deemed he was not offside as the flick-on came from Nigeria’s Odion Ighalo.
The Nigerians continued to have the better of the play and snatched the winner in the 89th minute when keeper Ronwen Williams was all at sea from a corner and Udinese defender Ekong put the ball into an empty net.
The result means the Super Leagues set up a last four clash with either Algeria or Ivory Coast, who play on Thursday.
Nigeria hit late winner to reach semi-finals
South Africa too defensive with their tactics
The approach may have worked in the previous round against Egypt but they failed to switch things up after going a goal behind. Bafana Bafana relied on the long ball and ambitious shots from distance for much of the game. They stepped it up in the final 20 minutes but it was not enough and they extend their wait for a first AFCON title since 1996.
MAN OF THE MATCH
Alex Iwobi (Nigeria): His pace and trickery was a constant threat. The Arsenal man’s finishing may have been below par but he was on hand to set up the opening goal.
27’ - GOAL FOR NIGERIA! Iwobi cuts the ball back for Chukwueze whose first shot is blocked but he tucks the rebound into the bottom corner.
49’ - FABULOUS SAVE! From the resulting free-kick from 25 yards, Etebo's effort is tipped onto the crossbar by Williams.
57’ - CLOSE! Chukwueze outpaces his marker and slices his shot across goal and Ighalo cannot get on the end of it at the back post.
74’ - GOAL FOR SOUTH AFRICA! Tau's cross from the right is flicked on and Zungu heads it in but the flag is raised for off-side. VAR takes a look and over-rules the decision.
89’ - GOAL FOR NIGERIA! Ekong scores from close range after keeper Williams is all at sea.
William Troost-Ekong capitalises on keeper error to win it