Amr Zaki's goal early in the first-half was cancelled out by Amer Sabri's spectacular strike five minutes after re-start.
An own goal by left-back Tarek Al-Sayed, who made his first start since Zamalek's 2-1 victory over Baladeya late in August, gave the military club three precious points.
Al-Gaish are still in charge of the league table with 16 points, three ahead of second-placed Petrojet, who were held to a goalless draw by Ittihad.
Zamalek, whose preceding league outing ended in a 1-0 defeat to Ahli in the Cairo derby, lie seventh on nine points.
Zaki needed seven minutes to break the deadlock after firing a right-footed drive from far range that left Al-Gaish keeper Wael Khalifa with no chance.
Newly-arrived striker Sherif Ashraf, who joined Zamalek from arch-rivals Ahli, should have doubled the lead in the 22nd minute.
He robed Al-Gaish defender Walid Aslan and went clear on goal but his shot was blocked by the advancing Khalifa.
One minute later, Sameh Adrous wasted a golden opportunity to level the score when he latched on to a long ball inside the area but his poor control helped Zamalek keeper Mohamed Abdul-Monsef handle the ball.
In the 35th minute, Mahmoud Fathallah capitalized on a blunder by Khalifa, who failed to handle a free-kick.
He poked home but his goal was ruled out for a foul on the guardian.
Sabri grabbed the equalizer in the 50th minute after scoring a stunning goal against his old club.
Left unmarked close to Zamalek's area, Amer chested down a long ball, pipped it up with his knee before unleashing a superb bullet past the stretched Abdul-Monsef.
Zamalek coach Ruud Krol introduced Gamal Hamza instead of the ineffective Ashraf, but his substitution didn't make a notable impact.
Anwar Masood could have added the second for Al-Gaish two minutes past the hour mark when he was released by a deft pass but his shot from a tight angle was blocked by Abdul-Monsef.
The fortunate hosts made amends two minutes later, thanks to Al-Sayed's own goal.
Hassan Awad's cross from the left fed the unmarked Masood, whose close-range shot was poorly parried by Abdul-Monsef before the ball hit Al-Sayed's body and went into the back of the net.
Zamalek had two successive opportunities to earn an equalizer but failed to capitalize on neither of them.
Five minutes from time, Magdi Attwa's pinpoint cross picked out Zaki but his header went just wide.
The Men in White were awarded a penalty four minutes later after Hamza was tripped inside the area by Khalifa.
Zaki stepped-up but his spot kick was blocked by Khalifa's stretched hands.
Watch Zamalek's goal:
Watch Al-Gaish double: