Kranjčar tilbrakte det meste av ungdomstiden i Dinamo Zagreb, og ble senere kaptein. Tidlig i 2005 gikk han overraskende til Dinamos rival, Hajduk Split.
Etter VM 2006 ønsket flere klubber å kjøpe ham, blant andre franske Stade Rennes og spanske Celta de Vigo. Han valgte imidlertid å gå til Portsmouth. Han fikk sin Premier League-debut 1. oktober 2006, og scoret sitt første ligamål et halvår senere, 31. mars 2007 mot Fulham på Craven Cottage. I sin første sesong spilte han 24 kamper og scoret 2 mål. I sin andre sesong i England, 2007/08, har han spilt seg til fast plass på laget.
Landslaget
Kranjčar spilte for flere aldersbestemte landslag før han debuterte for Kroatias A-landslag. Han spilte sin første kamp i landslagstrøya i august 2004, i en vennskapskamp mot Israel. Han spilte ni kamper og scoret to mål i kvalifiseringen til VM 2006, og i sluttspillet spilte han også samtlige av Kroatias tre kamper.