At 25 years old, Hachim Mastour has this physical status:
Mastour was born to Moroccan parents in Reggio Emilia, Italy. He began playing at his hometown club AC Reggiana, and in early 2012, at the age of 13, he featured for Inter Milan in youth tournaments despite rules prohibiting him from leaving Reggiana until his next birthday. In January of that year, he scored five goals in the Ielasi Memorial tournament, including one in the final against A.S. Roma. After approaches from Juventus, FC Barcelona, Real Madrid and Manchester City, Mastour moved to Inter's city rivals AC Milan on the recommendation of former manager Arrigo Sacchi, for a fee of €500,000. Shortly after signing, he gave an interview with Sky Italia in which he dribbled and performed kick-ups with a cherry. He is a Muslim.
He was promoted into Milan's first team by manager Clarence Seedorf for the final match of the 2013–14 Serie A season and would have become the youngest Milan player to feature in the league, but did not come off the bench in the 2–1 win over Sassuolo at the San Siro on 18 May.
On 31 August 2015, Mastour was loaned to Spain's Málaga CF for two seasons, at the exclusive request of club owner Abdullah al-Thani; as a minor his transfer to another country had to be approved by FIFA, which was not completed until 5 November. He was first included in a matchday squad for the La Liga home fixture against fellow Andalusians Real Betis two days later, making his competitive club debut in the eventual 0–1 loss by playing five minutes as a substitute for compatriot Adnane Tighadouini. On 7 July 2016, after making one appearance all season, Málaga opted to rescind Mastour's loan contract, and he returned to Milan.
On 14 July 2016, Mastour joined Dutch club PEC Zwolle on a season-long loan. He made his Eredivisie debut on 13 August, replacing fellow Moroccan Youness Mokhtar for the final 17 minutes of a 0–3 home loss to Sparta Rotterdam.
Despite initial reports suggesting his contract was expired, Mastour actually returned to Milan at the end of the loan spell, having one year left in his contract.
On 4 September 2018, Greek Superleague club Lamia officially announced the signing of Mastour on a free transfer, on a contract worth €200,000 per year. He was reported absent in December, and the following February his father confirmed that this was due to injury that he alleged was not being treated by the club. Following six goalless appearances in seven months, his deal was terminated by mutual consent on 4 March 2019. The following month, he trained with Parma.
Mastour signed a three-year contract with Serie C side Reggina on 18 October 2019. He made his debut on 22 January 2020, as an 81st-minute substitute in a 2–1 home loss to Virtus Francavilla.
On 14 January 2021, after playing the first half of the campaign with Reggina, he was loaned out to Serie C club Carpi until the end of the season. On 24 January, he scored his first professional goal in a 5–1 defeat against Sambenedettese.
After being clubless since July 2021, Mastour signed for Moroccan side Renaissance Zemamra in the Botola 2 on 28 June 2022. He scored on his debut for the club, in a 3–1 win against Jenuesse Ben Guerir on 11 September.
Mastour was capped seven times and scored once for Italy under-16s. He made his international debut on 18 August 2013, playing the first half of a 3–0 friendly victory over Qatar in Borgo Valsugana, and scored a late equaliser in a 2–1 win over Croatia in Umag on 11 March the following year.
Eligible to play for both the Italy national team and the Morocco national team, he announced on 19 May 2015 that he was persuaded to represent the latter, because he felt Morocco to be his country. He was offered the opportunity to have his international debut immediately, while he still had to prove himself to earn a spot for the Italy senior team.
On 12 June 2015, he made his international debut for Morocco in a 2017 Africa Cup of Nations qualification Group F match against Libya at the Stade Adrar in Agadir, replacing Nordin Amrabat for the final two minutes of the 1–0 victory.