George Maluleka struck first for the South Africans on eight minutes, in their first real attack, meeting a crisp ball on the edge of the area and lashing a low shot past Nigeria's –poorly-positioned reserve goalkeeper Uche Okafor.
Nigeria had a penalty appeal when Haruna Lukman was up-ended in the South African area, but the Monaco midfielder was booked for a dive.
Nigeria were soon back in it, when Gbolahan Salami tricked his way past a defender on the right channel and squared for Rabiu Ibrahim to score a mirror-image of Maluleka's goal.
Nigeria continued to threaten and could have gone ahead when Tswanya's screamer was spilled by Pule, but the defence was quick to react.
The Nigerians kept pushing, however, and when Gbolahan Salami's free-kick from deep was knocked down by Ganiyu Oseni and with the goalkeeper coming to close down the angle, Temile lobbed the ball under pressure on the stroke of half-time.
Both sides had chances to score in the second half.
Rabiu Ibrahim gave away possession in midfield, and Maluleka took advantage to crash a volley onto the cross bar.
And Yakubu Alfa responded by hitting the upright with a free-kick soon after.
Amajita pile on the pressure towards the end of the game, but weren’t able to pull one back and the game ended 2-1.
The final will be played on Sunday between Ghana and Cameroon.