South Africa struggled during the first half at a cold Orlando Stadium in Soweto and Uganda deservedly led 1-0 at half-time through a 17th-minute header from Ibrahim Orit.
Makgopa, a late inclusion after six withdrawals due to positive Covid-19 tests, levelled on 62 minutes by flicking a cross past goalkeeper Ismail Watenga.
Bongokuhle Hlongwane dribbled into the box five minutes later and his deflected shot entered the net off the far post to put the hosts ahead in an empty stadium due to the coronavirus pandemic.
A close-range shot from Makgopa doubled the lead before Abdu Lumala nodded a consolation goal one minute from the end of regular time.
Apart from the six missing players, South Africa had only one of their three new coaches, former national star Helman Mkhalele, on the touchline.
Fellow assistant, Macedonian Cedomir Janevski, also contracted Covid-19 while head coach, Belgian Hugo Broos, returned home to receive his second coronavirus injection.
Both teams are rebuilding with the emphasis on youth after failing to qualify for the Africa Cup of Nations in Cameroon next year.
An ageing South African side missed out after losing to Sudan in Omdurman last March while Uganda took only one point from three matches and were pipped by Malawi.
Only the winners of the 10 World Cup groups that begin in September advance to the final round and South Africa are in Group G with favourites Ghana, unpredictable Zimbabwe and strong-at-home Ethiopia.
Uganda will be second favourites behind top seeds Mali in Group H, which is completed by perennial underachievers Kenya and modest Rwanda.