Hamza broke the deadlock early in the first-half before his neat pass set-up Yousef Hamdi to double the lead.
But the home side stormed back to the game through efforts from Amr Allam and Nigerian striker Minusu Buba to go to the locker room with a 2-2 draw.
Mostafa Gaafar secured the three points for Zamalek seven minutes after re-start.
Zamalek are now second with 49 points, four ahead of holders Ahli while Cement remain 11th on 18 points.
Both sides squandered chances to stretch the score line as Cement’s Ali Ashour and Zamalek’s Abdul-Halim Ali failed to score from the spot.
Referee Fahim Omar dismissed Reda Ragab and Ahmed Sedik from Cement and Moetez Eno from Zamalek in the dying seconds as tempers flared.
Defensive Errors
Zamalek started with a confusing back line that included captain Medhat Abdul-Hadi, who just returned from a long layoff, alongside out-of-form Ahmed Bakri and Eno.
The trio lacked harmony and combined for several dreadful errors through out the game.
Cement defense looked no better as they were always out of position, making unmarked Zamalek strikers facing the goalkeeper an ordinary scene.
Hamza broke the deadlock in the 13th minute when he converted a cool spot-kick home after he penetrated the Cement defense before being clipped inside the area.
Abdul-Hadi, who looked rusty after six months on the sidelines, couldn’t stop Cement’s darting midfielder Mohamed Al-Fayoumi and brought him down into the box and Cement looked close to the equalizer.
But International keeper Abdul-Wahed Al-Sayed protected his side’s lead when he blocked the powerful penalty-kick from Ashour.
Zamalek widened the gap in the 21st minute when Hamza danced his way past three challengers and released Hamdi who sent a low drive past Cement advancing keeper Walid Ibrahim.
Cement Revive
Allam pulled one back for the home side in the 28th minute when he towered above a static Bakri to head a delicate volley into the far angle of the net.
Ali was unable to restore the two-goal lead in the 31st minute when he went face-to-face with Ibrahim but he finished poorly into the keeper’s body.
Cement replied toughly one minute later as Buba, placed among three defenders but still unchallenged, steered a header home for the equalizer.
Gaafar grabbed the lead in the 52nd minute when he powered a close-range finish into the back of the net after a quick give-and-go with Ali.
Hamza shined again on the hour mark as he rounded a Cement defender inside the area before being fouled again but Ali’s penalty-shot was comfortably save by Ibrahim.
Two minutes later, Hamza almost made it four but his smart header hit the cross bar.
Cement were denied an equalizer in the 84th minute when Ragab was flagged for offside before taping home.
Ragab, who came onto the pitch as a substitute a few minutes earlier, pushed the referee twice in protest and was punished with a straight red card.
Six minutes later, Sedik collected his second yellow card of the game for an inappropriate behavior and was sent-off. Eno was handed the third red card of the game deep into the injury time for a harsh challenge.