Manchester City Benali started his career in the
youth team of
Manchester City since joining the club at eight, and signed his first professional contract on his 17th birthday. While at the Manchester City youth team, Benali was given the captaincy. On 31 August 2011, Benali was loaned out to
League One club
Rochdale, along with his former teammate
David Ball, until 1 January 2012. After being absent from the first team for a month, Benali made his Rochdale debut on 4 October 2011, where he made his first start and played 72 minutes, in a 1–1 draw against
Scunthorpe United in the second round of the
Football League Trophy and progressed through to the next round after winning 3–1 in the penalty shoot–out. Benali then made his league debut eleven days later on 15 October 2011, where he provided assist for
Gary Jones, in a 2–2 draw against
Colchester United. After making two appearances for Rochdale, Benali returned to his parent club in late–December when it came to an end. At the end of the 2011–12 season, Benali was released by Manchester City following the end of his contract. By the time he was released, Benali had made no appearances for the club.
Brescia After leaving Manchester City, Benali played abroad for the first time, moving to Italy to join
Serie B club
Brescia in the summer of 2012. Benali made his Brescia Calcio debut, where he played 77 minutes, in a 2–1 loss against
Cremonese in the
second round of Coppa Italia. Benali made his league debut for Brescia debut, where he came on as a substitute in the 88th minute, in a 4–2 loss against
Novara Calcio. Benali went on to make nine appearances in his first season at Brescia, with injuries restricted his appearance. In the 2013–14 season, Benali regained his first-team place at the club and scored his first goal of the season in a 4–1 win over
Cittadella on 19 October 2013. Then on 9 November 2014, Benali was sent–off in the 77th minute, in a 2–0 loss against
Avellino. This was his return after earning a yellow card for the fourth time against
AS Siena on 1 November 2013. Benali then scored his second goal on 26 December 2013, in a 2–1 win over
Juve Stabia and his third goal came on 29 March 2014, in a 2–1 loss against Siena. Benali scored his fourth goal in another encounter, in a 4–1 win against Juve Stabia on 25 May 2014. Benali went on to make thirty–six appearances and scoring nine times for the club in the 2013–14 season. In the 2014–15 season, Benali started well when he remained in the first team and scored his first goal of the season in a 2 –1 win over
Pro Vercelli. Benali then scored three goals in three games between 28 October 2014 and 6 November 2014 against
Crotone,
Trapani and Pescara. Benali went on to score five more goals later in the season against
Virtus Entella,
Varese,
Vicenza,
Catania and
Bari. Despite being suspended three times, Benali went on to make thirty-six appearances and score nine times for the club in the 2014–15 season. However, at the end of the 2014–15 season, Benali's contract at Brescia was due to expire, and the club began experiencing financial problems. Benali had attracted interests from
Inter Milan,
Sampdoria,
Sassuolo,
Chievo,
Celtic and
Everton.
Palermo In the summer of 2015, after three seasons playing for
Brescia, he moved to the
Serie A club
Palermo on a free transfer, signing a four-year contract. However, Benali struggled to make a break into Palermo's first team and was expected to be loaned out by Manager
Maurizio Zamparini.
Pescara Shortly after joining Palermo, Benali was loaned out
Pescara immediately until the end of the 2015–16 season on 29 August 2015. Benali made his Pescara debut in the opening game of the season, making his first start, in a 4–0 loss against
Livorno. Benali established himself in the first team at Pescara and scored his first Pescara goal on 17 October 2015, in a 3–0 win over Trapani. Benali's second goal came on 24 January 2016, in a 4–0 win over
Perugia. Benali then scored his third goal of the season, in a 5–2 loss against Pro Vercelli on 5 March 2016. However, Benali was sent–off on 2 April 2016, in a 2–1 win over
Calcio Como and was banned for four matches as a result. After serving four matches, Benali returned to the first team and scored after two weeks from his return, in a 5–2 win over
Modena on 14 May 2016. Benali then played a role for the club when he scored in the
first leg of the promotion play-offs, in a 2–0 win over Trapani and the club would go on to be promoted to Serie A after drawing 1–1. Benali went on to finish the 2015–16 season at Pescara, making thirty–time appearance and scoring five times. Having previously stated he would like to join Pescara on permanently, Benali got his wish to join the club on 9 June 2016, shortly after the club's promotion to Serie A. and was given a number ten shirt ahead of the 2016–17 season. Benali scored his first Serie A goal, in the opening game of the season, in a 2–2 draw against
Napoli.
Crotone Benali joined Crotone towards the end of the 2017–18 campaign. Across four eventful seasons, he was promoted to Serie A twice but also relegated twice. His departure from the club in January 2022 was precipitated by a rift with coach Francesco Modesto, who attributed blame for the club's poor performance on club captain Benali and another senior player, Salvatore Molina.
Loan to Pisa On 26 January 2022, he joined
Pisa on loan until the end of the 2021–22 season, with an option and a conditional obligation to buy.
Return to Brescia On 26 August 2022, Benali returned to
Brescia.
Bari On 31 January 2023, Benali signed a 1.5-year contract with
Bari.
Virtus Entella On 1 August 2025, Benali moved to
Virtus Entella in
Serie B. On 2 February 2026, his contract was mutually terminated. ==International career==