Als gebürtiger Korse begann Khazri seine Karriere in der Jugend von Jeunesse Sportive Ajaccio. 2003 wechselte er in die Jugend vom SC Bastia. Sein erstes Pflichtspiel für die erste Mannschaft von Bastia absolvierte er am 20. Februar 2009 gegen den SC Amiens.[1] Sein erstes Tor erzielte er am 13. März 2009, dass er mit Bastia 1:0 gegen Montpellier gewann.[2] 2010 stieg er mit Bastia in die 3. französische Liga ab, um nur ein Jahr später als Tabellen erster wieder aufzusteigen. In der Saison 2011/12 erreichte er mit Bastia den 1. Platz in der Ligue 2 und stieg damit in die Ligue 1 auf. Bis 2014 spielte er für den SC Bastia und erzielte dabei 31 Tore in 171 Ligaspielen. Im Sommer 2014 wechselte er dann zu Girondins Bordeaux und unterschrieb einen Vierjahresvertrag.[3]
Am 30. Januar 2016 wechselte Khazri für eine Ablöse von circa 12 Millionen Euro zum AFC Sunderland und unterzeichnete einen Viereinhalb-Jahres-Vertrag.
Ende August 2017 wurde er an Stade Rennes verliehen und kehrte somit für eine Saison in die Ligue 1 zurück.
Im Sommer 2018 wechselte Khazri für 7 Millionen Euro zum französischen Rekordmeister AS Saint-Étienne und unterschrieb einen Vierjahresvertrag, nachdem der AFC Sunderland in die Football League One abgestiegen ist. In Saint-Étienne verbrachte der Tunesier vier Jahre, bevor er im Juli 2022 ligaintern zum HSC Montpellier wechselte.[4]
Mit der Nationalmannschaft qualifizierte er sich für die Weltmeisterschaft 2018, bei der er sein Team als Mannschaftskapitän anführte. Im zweiten Vorrundenspiel gegen Belgien erzielte er bei der 2:5-Niederlage in der Nachspielzeit sein erstes WM-Tor. Auch im letzten Gruppenspiel gegen Panama erzielte Khazri ein Tor zum 2:1-Sieg. Dies war der zweite WM-Sieg der Tunesier nach 1978.[6]