Heerenveen 2007–2012: Youth and early career Under the guidance of
Aziz Doufikar, Ziyech would return to football, progressing through the youth teams of Reaal Dronten and later ASV Dronten. He was also motivated by his older brother Faouzi to continue playing football and not to be discouraged. At the age of fourteen, he made his first return to Morocco to visit his father's grave. On his return to the Netherlands, he was invited on trials with professional clubs
SC Heerenveen and
Ajax. Ajax had found Ziyech too small to progress in their academy. Despite a good relationship with his foster family, who are of Armenian origin "he regularly comes home very late, sometimes drunk," says Doufikar. Having been an academy footballer for two years under youth coach
Robin Veldman, Ziyech very rarely participated in matches, spending his evenings until five in the morning in the neighbourhood drinking alcohol and using hard drugs. Doufikar described Ziyech during his first years in Heerenveen's academy: Hakim Ziyech saw Doufikar as his second father, spending his afternoons in indoor gyms playing two-on-two with his neighbourhood friends in his hometown of Dronten. At the age of sixteen, Ziyech participated in an indoor football tournament in the city of
Tiel with Jong SC Heerenveen/Emmen. It was during this tournament that he met Mustapha Nakhli, his agent until 2022. In a 2016 interview, Ziyech said, "When I was sixteen, I was one of the best players on the team, but I was the only one who wasn't offered a contract. I often questioned myself: 'I'm a tough guy, and on top of that, I'm a
Mocro.' I felt compelled to work harder." Despite his growing recognition, Ziyech continued to grapple with alcohol and drug dependency, even resorting to selling hard drugs to provide for his family's needs. To steer him away from a destructive path and bad habits, his former coach, Doufikar, kept Ziyech engaged in indoor football, emphasising the importance of focusing on the sport. However, Ziyech's off-field conduct prompted his exclusion from the first team until he could demonstrate discipline. However, after securing the contract, he had yet to make an official appearance for the club and was primarily involved in first-team training. His first unofficial appearance came on 10 July 2012 during a friendly match against the amateur club Be Quick Dokkum. In that match, Ziyech, starting alongside
Oussama Tannane and
Rajiv van La Parra, left an impression by scoring his first goal with a remarkable free kick. His performance earned him head coach
Marco van Basten approval, and he assured him of a spot within Heerenveen's squad for the
UEFA Europa League match against
Rapid București. On 2 August 2012, Ziyech made his formal debut for Heerenveen in the
first leg of the
third qualifying round of the
Europa League, against Rapid, playing a total of 53 minutes before being substituted. He made his
Eredivisie debut for the club on 10 August, in a 2–0 loss to
NEC. Ziyech scored his first goal for Heerenveen in a 2–0 win over
NAC Breda, on 10 August 2013. On 23 August, Ziyech provided two assists in a 3–3 draw with
Ajax. On 8 November, Ziyech scored and provided an assist in a 5–2 win over
Waalwijk. On 18 December, Ziyech scored two goals against
AZ Alkmaar, in the fourth round of the KNVB Cup, one in regular time and a last-minute penalty to draw level and take the game into a penalty shootout, but he missed his penalty and Heerenveen were knocked out 6–5 on penalties. On 21 December, Ziyech scored twice and provided one assist in a 5–1 away win over
AZ Alkmaar. On 18 January 2014, Ziyech scored in a 2–2 draw with
Roda. On 9 February, he scored in a 3–1 win over
Groningen. On 27 April, Ziyech scored once and provided an assist in a 4–1 win over Utrecht, after coming on as a substitute.
Twente On 18 August 2014, Ziyech joined
Twente for 3.5m euros, signing on a three-year contract and taking the number 10 shirt. On 5 October, Ziyech scored once and provided an assist in a 2–2 draw with
AZ Alkmaar. On 6 March 2015, Ziyech scored twice in a 2–2 draw with
Willem II. On 10 May, he provided three assists in a 3–0 home win over
Dordrecht. On 17 May, Ziyech scored twice and provided an assist in a 3–1 away win over his former club
Heerenveen. Ziyech finished the season with 11 goals and 15 assists in the Eredivisie. The 2015–16 season was the most prolific season in Ziyech's career, as he scored 17 goals and provided 10 assist in the Eredivisie.
Ajax 2016–2018: Initial seasons and European final On 30 August 2016, Ziyech signed for
Ajax on a five-year deal, with a reported transfer of €11m. On 15 September, Ziyech was given a red card in the 79th minute, in a 2–1 win over
Panathinaikos in the opening group game of the
Europa League. Six days later, on 21 September, he scored his first goal for Ajax in a 5–0 win over
Willem II in the
KNVB Cup. On 2 October, Ziyech scored his first league goal for the club in a 3–2 win over Utrecht. On 20 October, he scored in a 2–2 draw with
Celta Vigo in the
Europa League. On 20 October, he scored in a 1–0 win over
Excelsior. On 3 November, Ziyech scored in the reverse fixture against Celta Vigo in the Europa League, a 3–2 win. On 4 December, he scored a penalty in a 2–0 win over
Groningen. On 15 January 2017, Ziyech scored twice in a 3–1 away win over
Zwolle. On 29 January, he scored in a 3–0 win over
Den Haag. On 8 April, he scored in a 5–1 away win over
NEC. On 12 August 2017, Ziyech scored the opening goal in a 1–2 defeat to
Heracles Almelo. On 20 August, Ziyech scored in a 3–1 win over
Groningen. On 9 September, Ziyech missed a penalty but eventually scored just five minutes later in a 3–0 win over
Zwolle. On 18 November, Ziyech provided an assist in an 8–0 win over NAC Breda. On 26 November, he provided an assist in a 5–1 win over
Roda. On 14 December, Ziyech scored in a 3–1 win over Excelsior. On 20 December, Ziyech missed a penalty against his former club
Twente, in the
round of sixteen of the
KNVB Cup, with Ajax suffering elimination after losing the
penalty shootout. On 4 February 2018, Ziyech scored an injury-time goal in a 3–1 win over
NAC Breda. Three days later, on 7 February, he scored in a 4–2 away win over Roda. On 18 March, Ziyech scored twice in a 5–2 away win over
Sparta Rotterdam. On 19 April, Ziyech scored in a 4–1 win over
Venlo.
2018–2020: Domestic double and departure On 25 July 2018, Ziyech scored in a
2–0 win over
Sturm Graz in the
second qualifying round of the
UEFA Champions League. On 22 August 2018, Ziyech scored in a
3–1 win over Dynamo Kyiv in the
play-off round of the
UEFA Champions League. On 13 February 2019, he scored his first Champions League goal, scoring the equaliser in a 1–2 loss against
Real Madrid in the round of 16. On 5 March 2019, he scored again in the 4–1 victory over Real Madrid in the second leg, which saw the title holders being knocked out and bringing Ajax to the quarter-finals, where they eliminated
Juventus to reach the semi–finals of the competition. On 30 April 2019, Ziyech assisted for the only goal in the Champions League semi–final first leg win at
Tottenham Hotspur. He also scored the second goal for Ajax in the second leg of the semi-final, where Ajax were beaten 3–2 by Tottenham and were knocked out of the tournament on away goals with a 3–3 aggregate score. In August 2019, he signed a new three-year contract with Ajax. In the
2019–20 UEFA Champions League group stage, Ziyech scored one goal each in a 3–0 away win against
Valencia, and in a 2–0 away win over
Lille. However, Ajax lost 1–0 at home to Valencia to be eliminated at the group stage.
Chelsea 2020–21 season: European champion in 2020 On 14 February 2020, it was announced that Ajax and
Chelsea had reached an agreement for the transfer of Ziyech for a fee of €40 million (potentially increasing to a maximum of €44 million, with variable factors). He joined the
Premier League club for the
2020–21 season. Ten days later, Chelsea announced they had agreed personal terms with Ziyech and that he had signed a five-year contract. Ziyech made his league debut for Chelsea on 17 October 2020, in a 3–3 home draw against
Southampton after he came off from the bench. On 28 October 2020, he scored his first Chelsea goal in a 4–0 away win over
Krasnodar on matchday two of the
Champions League. Three days later, Ziyech started his first league match for Chelsea, contributing with a goal and an assist in a 3–0 away win over
Burnley. In doing so, Ziyech became the first Chelsea player since
Diego Costa to score in his first two starts for Chelsea in all competitions. In Chelsea's next league match, Ziyech provided two assists and was named the man of the match as Chelsea defeated
Sheffield United by a score of 4–1. On 17 April 2021, Ziyech scored the only goal in Chelsea's
FA Cup semi-final clash against
Manchester City. On 29 May 2021, Ziyech won the
2021 UEFA Champions League Final with Chelsea 1–0 against
Manchester City, but did not play in the final. Hence, he became the third Moroccan to win the competition, after
Munir and
Achraf Hakimi. Ziyech started ten matches and scored two goals in Chelsea's run to the final of the competition, including one against
Atlético Madrid in the Round of 16 second leg at
Stamford Bridge.
2021–22 season: UEFA Super Cup and FIFA Club World Cup titles On 11 August 2021, Ziyech scored against
Villarreal to give Chelsea their first
UEFA Super Cup in 23 years, as they won on penalties. Ziyech was subbed off shortly before half-time with his arm in a sling after challenging for a header inside his own penalty area and landing badly. On 18 January 2022, Ziyech scored in a 1–1 draw against
Brighton. On 23 January, Ziyech scored a wonderful curling shot against
Tottenham Hotspur in a 2–0 victory. On 12 February, Ziyech was substitute as Chelsea won the
2021 FIFA Club World Cup title.
2022–23 season: Dip in form and failed loan move In the January transfer window, Ziyech could not move to
Paris Saint-Germain on loan as his parent club submitted the wrong documents before the deadline, which were ultimately rejected by the
LFP. He eventually ended the season with 24 appearances in all competitions. After the failure to leave for PSG, he criticized Chelsea for their lack of professionalism and respect. The loss of form coupled with the arrival of multiple signings led to him being ostracized from the first team.
Galatasaray On 19 August 2023,
Süper Lig side
Galatasaray announced that Ziyech arrived in Istanbul to complete his transfer to Turkey. On 20 August 2023, Ziyech completed a season-long loan to Galatasaray, with an obligation to join permanently. On 16 September 2023, Ziyech made his debut in a 4–2 home win against
Samsunspor coming off the bench to provide an assist to
Mauro Icardi. On 20 September, he made his first start in a 2–2
UEFA Champions League group stage draw with
FC Copenhagen. Three days later, on 23 September, he scored his first goal for
Galatasaray in a 2–1 win at
İstanbul Başakşehir. On 1 November 2023, Ziyech was nominated for the 2023
African Footballer of the Year by
CAF. On 29 November, he scored a brace in the
2023–24 UEFA Champions League group stage match against
Manchester United, on 29 January 2025, it was stated that Ziyech's contract was mutually terminated. Disputes with the upper management led to his premature departure from Türkiye.
Al-Duhail On 30 January 2025, Ziyech joined
Qatar Stars League club
Al-Duhail. Although contract details were not disclosed, reports indicated a short-term agreement. He scored his first goal for the club on 8 March, contributing to a 4–2 away win over
Al Ahli in the league. On 31 May 2025, it was announced that Ziyech's contract had been terminated by mutual consent, ending his 4-month stint in Qatar.
Wydad AC On 22 October 2025, Ziyech signed a two-year contract with
Botola Pro club
Wydad AC in Morocco. His transfer is considered by many to be the biggest in the league's history. His primary motivation to sign for Wydad was to play football in Morocco and re-connect to his ancestral roots.
CAF described Ziyech's transfer as a major gain both on the commercial and sporting fronts. On January 25th 2026, Ziyech played his first match for
them against Congolese side
Maniema Union in the
2025–26 CAF Confederation Cup. ==International career==