Throughout the first half, both teams came out with a conservative approach with few chances.
Zamalek defender Mahmoud Alaa scored the sole goal in regular time from the spot in the 55th minute following a VAR review. Despite cheered by 50,000 roaring supporters, Zamalek did not have many chances to score more goals.
At stoppage time, Berkane winger Omar Namsaoui was sent off following another VAR review, as cameras showed him hitting Zamalek's forward Mahmoud Kahraba in the face.
The match went to penalties as the aggregate score tied at 1-1.
Hamdi Laachir fired wide the first penalty for Berkane after Khalid Boutaib netted for Zamalek.
The second penalty for the Moroccan team was saved by goalkeeper Mahmoud Gennesh, but Ethiopian referee Bamlak Weyesa was told by the video assistant referee that Zamalek keeper stepped off his line, ordering a replay as Ismail Mokadem fired the second kick into the net.
However, Zamalek scored all their remaining four penalty kicks, with substitute Ahmed Sayed scoring the decisive one.
After the game, Egyptian President Abdel-Fattah al-Sisi congratulated Zamalek over winning the African title.
On his official Facebook page, Sisi congratulated "the Egyptian people for the victory of Zamalek", thanking the two teams for their sportsmanship.
Meanwhile, Zamalek coach Christian Gross said he was happy to restore "the glory days" of his team after winning the African Confederation Cup title.
"I'm happy for my players and also for the fans of Zamalek. We had a wonderful night; it's fantastic to play in front of a crowd like this," the Swiss coach told the post-match news conference.
Gross also said his side needed to focus on the tasks ahead in the two domestic competitions.
Zamalek can still win an extraordinary treble as they also compete for the Egyptian Premier League and Egypt Cup titles.