1 Compétitions officielles nationales et internationales senior, incluant le parcours amateur et en équipe réserve. 2 Matchs officiels. Dernière mise à jour :
Sofiane Hanni, fils de Nordine Hanni, est un joueur qui mesure 1,78 mètre et pèse 72 kg. Il commence à jouer au football en équipes de jeunes à l'US Ivry (1998-2001) avant d'aller à l'AC Boulogne-Billancourt (2001-2005). À quinze ans, il rejoint le centre de formation du FC Nantes.
FC Nantes
En 2008, le joueur signe un contrat professionnel en faveur du FC Nantes. Il évolue principalement avec l'équipe de CFA2 et ne parvient pas à s'imposer avec les professionnels. Fin , son contrat avec le FCN n'est pas renouvelé.
En Turquie
Il est mis à l’essai dans un club de 2e division turc, Kayseri Erciyesspor. Il y reste trois ans, jusqu'au mercato estival de 2013. Il est alors meilleur passeur de l'équipe et contribue à l’ascension du club en première division. Il est toutefois vendu au club Ankaraspor A.Ş. en 2e division turque.
Yellow Red KV Malines
Le , il signe un contrat de 3 ans avec le Yellow Red KV Malines (KV Mechelen ou FC Malines), en première division belge.
Il marque 10 buts et délivre 7 passes décisives lors de sa première saison avec le club belge.
Saison 2015/2016
Il connaît un début de saison discret, ne trouvant pas le chemin des filets. Cela change le pendant la rencontre face à Saint-Trond comptant pour la 11e journée de Jupiler League. Il est en effet impliqué sur les 3 buts du FC Malines (3-0). D'abord en provoquant un pénalty qui est transformé par Milos Kosanovic en première période, puis en offrant une passe décisive à Tim Matthys, avant de marquer son premier but de la saison. Il est alors élu par la presse meilleur joueur de la journée[1].
Le , pour la 12e journée, lors d'une confrontation spectaculaire avec le Zulte-Waregen que son équipe perd sur le score de (3-4), il marque 2 buts dont le second sur un coup franc direct[2]. Puis une semaine plus tard, il inscrit son quatrième but de la saison face à Waasland-Beveren pour le compte de la 14e journée[3]. Le FC Malines s'impose (2-0) lui permettant d'être 11e du classement avec 15 points. Au match contre le KV Ostende, lors de la 16e journée il ouvre le score pour son équipe qui remporte la rencontre (2-1). Le , au déplacement à Mouscron, il contribue une nouvelle fois à la victoire des siens (2-3) en marquant un but de la tête. Il récidive dès le match suivant contre Lokeren en marquant dès la 8e minute d'une superbe frappe de 30 mètres[4]. Lokeren revient quand même au score et le match se termine (1-1).
À la 30e journée face au Standard de Liège, Hanni inscrit un doublé et adresse deux passes décisives à Nicolas Verdier. La rencontre se termine sur le score de (4-0) et il est impliqué sur tous les buts de son équipe.
Le lors du match contre Charleroi en Play-Offs 2, il ne peut empêcher la défaite des siens (2-3) malgré un nouveau doublé (dont un pénalty) qu'il réalise en fin de match.
À la suite de sa saison pleine et régulière il gagne d'abord le le Lion Belge (meilleur joueur arabe du championnat de football belge)[5] puis le , il succède à Neeskens Kebano en remportant le Soulier d'ébène 2016 qui récompense le meilleur joueur africain ou d'origine africaine du championnat belge. Il est le premier joueur de football algérien à remporter ce trophée[6].
Il est l'auteur de 17 buts et de 7 passes décisives. Il estime qu'il s'agit de « sa plus belle saison au niveau professionnel ».
Royal Sporting Club Anderlecht
Le , il signe un contrat de 4 ans avec le RSC Anderlecht. Il marque son premier but avec les mauves contre le KV Courtrai lors d'une victoire 5-1. Il devient capitaine de l'équipe bruxelloise.
Sofiane Hanni se révèle décisif contre Charleroi lors d'une victoire sur le score de 3-1 qui permet à RSC Anderlecht d'être champion de Belgique pour la 34ème fois de son histoire. Lors de la saison 2017-2018, contre KV Ostende, il marque le premier but du champion en titre de la saison à la 78ème minute, à l'occasion d'une victoire 1-0. Le , il délivre une passe décisive à Massimo Bruno puis rate un penalty contre Saint-Trond VV. Les Anderlechtois s'inclinent 2-3.