Banyana came close to taking an early lead when Janine Van Wyk’s free-kick missed the target by a whisker.
The South Africans still created the best chances earlier on, but their inability to convert them proved wasteful.
Following another good move by Banyana, the ball fell to Jermaine Seoposenwe, but the snap effort was easily saved.
Two minutes later, a foul was committed on Linda Motlhalo and conceded a free-kick. However, the effort was ballooned by Nothando Vilakazi.
Banyana soon went ahead when Thembi Kgatlana continued her scoring ways with an easy finish from inside the box on 31 minutes as she made it five goals in four games.
That appeared to set them on their way with Mali proving little of a threat in the opening half of the match.
Following the start of the second half, Banyana were given a scary moment when goalkeeper Kaylin Swart dropped a long ball, but managed to gather quickly at the second attempt.
Banyana made their first change when Busisiwe Ndimeni replaced Leandra Smeda. The Malians responded with their first alteration minutes later.
Forward Maimouna Traore replaced Yakare Niakate in an all offensive move to try and launch a come back.
Despite the stubbornness of Mali to try and unsettle Banyana, the game was soon sealed completely.
Banyana benefitted once more from poor defensive organisation when Lebohang Ramalepe’s long range shot secured the second goal to end the match as a contest.
The result sets up a repetition of the group stage encounter with Nigeria who Banyana will face for the title of African champions.