Born in Aswan, Ghazal grew up in Cairo playing football on the streets. His father and uncle were both former footballers. His nephews were invited to a trial with El Sekka El Hadid and asked Ghazal to go with them where he impressed the club's coaches and was offered a contract. His performances with El Hadid attracted attention from both Zamalek, where he trained with the squad for a month, and Al Ahly but transfers to both clubs collapsed over El Hadid's asking price. Mohamed Abbas who had worked as a coach with Zamalek during Ghazal's spell there was eventually appointed manager of Wadi Degla and persuaded him to join the side at the age of fourteen.
Degla were owned by Egyptian businessman Mamed Sagny who also owned Belgian side Lierse and arranged a trial with the club when Ghazal turned eighteen. Ghazal later commented on his relationship ship with Sagny, stating "Samy is like a big brother to me, one of those who really believed in me from the very start, he made sure I trained well and even got me a personal English tutor to improve my language." He spent a month on trial with Lierse but was not offered a contract.
Having been turned down by Lierse, Ghazal instead assembled a video of him playing for Degla's youth team and sent it to a scout he met online. The scout sent the video to coaches of Portuguese club Nacional, who submitted an offer to sign Ghazal and the transfer was completed in 2012 for a fee of €40,000.
After arriving at the club, Ghazal initially struggled to adapt to the pace of football in Portugal, later commenting: "I had no clue about anything. I took time in that first half season. I was not performing that well". He helped the side qualify for the UEFA Europa League and his performances attracted the attention of clubs from Italy and France, but their offers were rejected by the Nacional board.
At the start of the 2016–17 season, Ghazal scored his first senior professional goal during a 3–2 defeat to Belarusian side Dinamo Minsk in the Europa League. Ghazal later became the youngest person to captain the club at the age of 24 during a match against Marítimo and was later appointed as the club's permanent captain, becoming the first Egyptian player to captain a top-tier European side. In February 2016, he made his 100th appearance in all competitions for Nacional during a 1–1 draw with Vitória.
In 2017, he was sold to Chinese club Guizhou Zhicheng for a fee of €2.6 million following Nacional's relegation to LigaPro at the end of the 2016–17 season. But, as a result of new Chinese Football Association player regulations which limited the number of foreign players allowed to play in matches, Ghazal was unable to play for the club in the league, making one Chinese FA Cup appearance for the club, during a 5–3 defeat to Shanghai Shenxin, before the club mutually agreed to terminate his contract.
Vancouver Whitecaps FC
On 10 August 2017, Ghazal signed with Major League Soccer club Vancouver Whitecaps FC. Whitecaps manager Carl Robinson later revealed that the club had previously tried to sign Ghazal prior to his move to China and had been in contact with him for two months before he eventually signed. He made his debut a month later, starting in a 3–2 defeat against San Jose Earthquakes, earning praise from Robinson who described his performance as "absolutely top class." He made seven regular season appearances for the Whitecaps and played in all three of their MLS postseason playoff matches, reaching the semi-final before losing to Seattle Sounders FC.