Kaizer Chiefs striker Ryan Moon scored a goal on debut in the 28th minute and Gift Motupa doubled the advantage in the second-half.
Bafana threatened early, as another debutant in Teboho Mokoena directed a free-kick into the arms of goalkeeper Masule Mwapule.
The deadlock was broken by Moon as the game approached the half-hour mark, the 20-year-old forward beating his marker and marking his maiden Bafana Bafana appearance with a neat goal.
Others to have netted in their first showing for South Africa in the past few years include Mpho Makola, Thabo Mnyamane, Bongani Ndulula and David Zulu.
For Botswana, Kabelo Seakanyeng had a shot on goal midway through the stanza, while Thero Setsile headed wide shortly before the break.
Coming out for the second period, the home side pushed for an equaliser and Bafana Bafana lived dangerously but eventually got the ball clear following a goal mouth scramble.
At the other end a good move afforded Gift Motupa the space to shoot but he directed his effort wide of goal.
When given another opportunity in the 72nd minute he did not disappoint as Cole Alexander picked up Jamie Webber's cross to set up Motupa to score his fourth in the colours of the national team.
The Moruleng Stadium in the North West Province plays host to the second-leg match next Saturday (22 July).
Botswana XI: Mwapule Masule (GK), Thabo Leinanyane, Kaelo Kgaswane, Simisane Mathumo, Sylvester Leririma, Mosha Gaolaolwe, Kabelo Seakanyeng, Richard Legailwa, Hendrick Moyo, Tumisang Orebonye, Thero Setsile.
Subs: Anthony Gouws (GK), Lemponye Tshireletso, Thabang Sesinyi, Tapiwa Gadibolae, Thatayaone Kgamanyane, Koagile Senwelo, Lemogang Maswena.
Bafana XI: Boalefa Pule (GK), Siyabonga Nhlapo, Tercious Malepe, Mario Booysen (C), Mothobi Mvala, Riyaad Norodien, Teboho Mokoena, Sibusiso Kumalo, Cole Alexander, Ryan Moon, Gift Motupa.
Subs: Steven Hoffman (GK), Sipho Mbule, Sphelele Ntshangase, Jamie Webber, Sandile Mthethwa, Malebogo Modise, Bonginkosi Ntuli.