South Africa made a bright start, but there were very few opening chances as both teams massed up the midfield.
Siyabonga Zulu gave Zimbabwe keeper Tatenda Mukuruva some problems in the 16th minute with a rasping shot as the visitors put the hosts under tremendous pressure.
Zimbabwe struggled to fashion their own chances and hardly troubled South African goalkeeper Ricardo Goss.
Siphelele Ntshangase then almost gave the visitors a deserved lead on the 30th minute, but Mukuruva produced a brilliant save.
Siphiwe Khambule blasted over the bar from inside the box in referee’s added time as the visitors were once again denied the opening goal at the stroke of halftime.
In a bid to add some bite up-front, Da Gama removed Khambule for Dumisani Zuma in the 60th minute as the visitors continued to search for the elusive goal.
That came soon afterwards when Keagan Dolly produced a moment of magic, dribbling past a number of defenders before slotting past the gaolkeeper.
Zimbabwe replied immediately with their own attempt, but the South African defence cleared the danger.
The hosts were then awarded a questionable penalty in the 83rd minute when captain Kwanda Mngonyama was adjudged to have handled in the box, and Walter Musona scored from the resultant kick to make it 1-1.
South Africa U23: Goss, Macheke, Mngonyama, Rikhotso, Zulu, Mobara, Dolly, Modiba, Konqoba, Ntshangase, Kambule