1 Compétitions officielles nationales et internationales senior, incluant le parcours amateur et en équipe réserve. 2 Matchs officiels. Dernière mise à jour : 30 janvier 2025
Après deux saisons en Ligue 2, son club formateur dépose le bilan[1],[2]. Il signe alors en [3] au Paris FC, évoluant en National, pour la saison 2013-2014[4]. Malgré le plus gros salaire du club[5], il ne joue que quatre matchs, faute à « un concours de circonstances » selon son entraîneur Christophe Taine[6].
Red Star FC
Contacté par Steve Marlet[7], il rejoint alors l'autre club francilien de la division, le Red Star FC. Après une première saison ponctuée par la première place au classement, il retrouve la deuxième division, qu'il avait connu avec Sedan, et signe un nouveau contrat de trois saisons[8]. En , il est un temps annoncé partant pour le Stade de Reims[9],[10], mais reste finalement au club[11],[12].
Lille
Il signe au LOSC lors du mercato estival 2016, sous la forme d'un prêt avec option d'achat obligatoire de deux millions d'euros, un contrat qui prendra cours jusqu'en [13].
Il marque son premier but en Ligue 1 le lors d'un match qui oppose le LOSC au SM Caen, une rencontre remportée (4-2) au cours de laquelle il signe également deux passes décisives[14].
Explosion au DFCO
N'entrant pas dans les plans du nouvel entraîneur lillois, Marcelo Bielsa, il est prêté le au Dijon FCO pour une saison avec option d'achat[15]. Le , il s'engage d'une façon définitive avec Dijon[16].
Le , il inscrit un doublé face au RC Lens dans le cadre des barrages et assure ainsi à son équipe une place en Ligue 1 pour la saison suivante[17].
Au Dijon FCO, il dispute un total de 75 rencontres toutes compétitions confondues, durant lesquelles il inscrit 17 buts et délivre onze passes décisives.
Ses prestations lui permettent d'être nommé en dans la présélection de Henryk Kasperczak en équipe de Tunisie[19]. Le , il est retenu pour participer à un premier stage composé de joueurs expatriés, qui a lieu le , afin de préparer la cinquième journée des éliminatoires de la CAN 2017, qui se déroule le face à Djibouti[20]. Titulaire pour son premier match, il ouvre d'abord le score avant d'être passeur décisif pour Hamdi Harbaoui sur le deuxième but. La rencontre se termine sur le score de 3-0[21]. Naturellement, il figure sur la liste des joueurs convoqués pour participer à la coupe d'Afrique des nations 2017.
En 2018, il fait partie de la liste des joueurs retenus pour la coupe du monde 2018 en Russie[22]. L'année suivante, il est à nouveau convoqué pour participer à la coupe d'Afrique des nations 2019. Le , il marque un but face à la Croatie en match amical, qui se termine sur le score de 2-1, et permet à la Tunisie d'être la première équipe africaine à battre cet adversaire invaincu à domicile depuis six ans[23]. Deux ans plus tard, il participe à la coupe d'Afrique des nations 2021. Le , il est sélectionné par Jalel Kadri pour participer à la coupe du monde 2022[24]. En , il est retenu dans la liste des 27 joueurs tunisiens sélectionnés par Kadri pour disputer la coupe d'Afrique des nations 2023.