Early career After starting at Galapagar and
DAV Santa Ana, Munir scored 32 goals in 29 matches playing for
CF Rayo Majadahonda's Cadete A team, on loan from
Atlético Madrid, after impressing during a trial in 2010. However, both Atlético and Real Madrid turned down the opportunity to bring him into their ranks. As a result, he attracted interest from a number of sides such as
Manchester City, but signed for
Barcelona's
youth academy the following summer.
Barcelona Munir made his
UEFA Youth League debut with the
Juvenil side against
Ajax U19, where he scored two goals. He scored braces against
Milan U19 and
Copenhagen U19, finishing the tournament scoring 11 goals in 10 matches. He scored a brace in the final against
Benfica U19. On 3 March 2014, he extended his
Barça contract until June 2017. After being an unused substitute against
Tenerife and
Deportivo de La Coruña, Munir made his professional debut for Barcelona B on 2 March 2014 in a 1–2 away win against
Mallorca in the
second division, coming as a 72nd-minute substitute for
Sandro. He scored his first goal as a senior player in a 2–1 home win against
Girona on 19 April. ,
Gerard Piqué and Munir
(right) warming up for Barcelona in August 2014 before the fixture against
Napoli. On 24 August 2014, Munir made his official debut for the first team in
La Liga, against
Elche at
Camp Nou. He started the match and scored the second goal of an eventual 3–0 win before being substituted after 67 minutes for
Pedro. Eight days short of his 19th birthday, he became Barcelona's third-youngest goalscorer after
Bojan and
Lionel Messi. On 22 February 2015, Munir was sent off for two bookings in Barcelona B's 0–1 defeat at
Llagostera, as
the season ended with relegation to
Segunda División B. He played three matches apiece in Barcelona's successful runs in the
Copa del Rey and
UEFA Champions League, but was not included in the matchday squads for either final, becoming the first Moroccan to win the
Champions League. Munir was an unused substitute for their 5–4 win over
Sevilla in the
2015 UEFA Super Cup on 11 August. On 2 December, he scored his first Barcelona goals since his debut, scoring two in a 6–1 win over
Villanovense as Barcelona advanced by the same score on aggregate in the domestic cup. On 17 December, starting due to Messi and
Neymar's injuries in the semi-finals of the
2015 FIFA Club World Cup in
Yokohama, Munir won a
penalty kick when fouled by
Guangzhou Evergrande Taobao's
Huang Bowen, from which
Luis Suárez finished his hat-trick to send Barcelona into the final, 3–0. The South American duo returned for
the final, which Barcelona won 3–0 against
River Plate with Munir unused. On 13 January 2016, profiting from Suárez's suspension, Munir scored both goals in a cup win at
city rivals Espanyol, putting Barcelona into the quarter-finals 6–1 on aggregate. He was unused for the
final, a 2–0 extra-time win over Sevilla on 22 May, but with five goals was one of as many players to finish as the tournament's top scorer, among them Messi and Suárez. On 14 August 2016, Munir came on as a substitute in the 76th-minute and scored to double Barcelona's lead over Sevilla in the
2016 Supercopa de España first leg to give Barcelona a lead of two goals in the second leg.
Loan to Valencia On 30 August 2016, Munir moved to fellow La Liga club
Valencia on a season-long loan. He was handed the number 9 previously worn by
Paco Alcácer, who had moved in the opposite direction. Munir made his debut on 11 September, replacing
Santi Mina after 63 minutes of a home game against
Real Betis, and his rebounded header was scored by
Ezequiel Garay in a 2–3 defeat. On 22 October, he scored his first goal for
Los Che, coming on at half-time for
Martín Montoya and equalising at the
Mestalla against his parent club in a loss by the same score.
Loan to Alavés On 1 September 2017, Munir joined
Deportivo Alavés on a season-long loan deal. He made his debut nine days later in a 1–0 loss at
Celta de Vigo, replacing
Enzo for the final 33 minutes. On 30 September he scored his first goal for the
Basques, opening a 2–1 win at
UD Levante. In the reverse fixture the following 1 March, he was sent off for
diving in a 1–0 win at the
Mendizorrotza Stadium.
Sevilla Munir was offered the chance to renew his contract with Barcelona before its expiration in the summer, but refused to do so. Barcelona assured him that he would not play for the club again, and coach
Ernesto Valverde said "it would be for the best" if he was sold in January 2019. Several clubs from England and italy were interested in the forward, but, on 11 January, Sevilla signed him for a fee of around €1 million. On 13 January, Munir made his Sevilla debut in a 2–0 loss at Athletic Bilbao, replacing
Roque Mesa for the final 12 minutes. He scored his first goals in March, one in each leg of a Europa League last-16 tie against
SK Slavia Prague, who nonetheless won 6–5 on aggregate, and finished the league season with five goals in 16 games including in a 2–0 win against Athletic on the final day to qualify for the continental tournament again. Munir scored a hat-trick on 7 November 2019 in a 5–2
Europa League group win at
F91 Dudelange, which put his team through to the last 32 and brought his tally in the competition to five. On 24 November 2020, Munir scored his first
Champions League goal in a 2–1 away win over
Krasnodar in the
2020–21 season; that goal came in stoppage time to grant his team a place in the knockout stages.
Getafe On 31 August 2022, Munir moved to fellow top tier side
Getafe. He played 28 league games and three in the Copa del Rey, scoring seven goals and making one assist, while becoming the third Moroccan to 200 La Liga games.
Las Palmas On 30 July 2023,
recently-promoted to La Liga side
Las Palmas announced the free signing of Munir on a one-year contract. Against Celta Vigo on 2 October, he played his 212th La Liga game, and overtook
Noureddine Naybet's record for a Moroccan. In his one season in the
Canary Islands, he played 39 games over all competitions, scored four goals and assisted two.
Leganés On 22 August 2024, Munir signed a two-year deal with
Leganés also in the first division. He netted his first goal for Leganés on 2 November in a 4–3 defeat to
Girona, and equalled a record held by
Carlos Aranda,
Roberto Soldado, and
Miquel Soler of scoring for seven different La Liga clubs. Munir scored a late equaliser in a 3–3 home draw with Alavés on 15 February, and was sent off in added time for striking compatriot
Abdel Abqar; he received his first red card since one for Alavés in March 2018, and was banned for three games. He played 29 games and scored seven goals, but was released one year early in June 2025 following their relegation, and was then offered a two-year deal to return to Alavés.
Esteghlal On 6 September 2025, it was announced that El Haddadi had agreed to join
Esteghlal in the
Persian Gulf Pro League on a two-year contract. On 1 March 2026, he said that, amid the outbreak of the
Israeli–United States strikes on Iran, he had left
Tehran by road for Turkey. ==International career==