Mpho Makola got the goal for Bafana, just as he had a year ago in the 1-0 victory over Senegal.
Egypt had the first chance in the opening minute, as captain Abdallah Elsaid skipped past Abbubaker Mobara, but he fired his shot way off target.
On 5 minutes, a blunder by Clayton Daniels gifted possession to Roma striker Mohammed Salah. Salah found Ahmed Hassan, who curled an effort on goal, but Itumeleng Khune got down well to save.
A minute later, Bafana struck. Mandla Masango gathered the ball on the right hand side of the field and curled in a cross that Makola headed in at the back post.
In the 12th minute, Keagan Dolly slid a fine ball into Makola on the right hand side of the area, but his shot was pushed away this time by Ahmed Elshenawy.
Some more good work from Bafana saw Andile Jali set up Masango on the edge of the area in the 16th minute, but he shot over.
On the half hour mark, Egypt winger Omar Gaber went on a jinking run past three Bafana players, but his low cross could not find a teammate.
Daniels did well to block Ahmed Hassan’s shot a minute before the break while on the stroke of half time, Dean Furman went into the referee’s book for a foul on Mahmoud Hassan, who had put the ball through his legs.
Egypt started the second half brightly, and Salah fed Gaber, whose cross was headed off target by Mahmoud Hassan, under pressure from Daniels. Salah then wasted a great chance to get Egypt back on level terms in the 56th minute, as he curled wide from Mahmoud Hassan’s pass across the penalty area.
In the 63rd minute, Salah wasted another excellent chance, heading wide at the back post.