Nach dem Motto "Wer fragt, der kommt im Leben weiter" begann er seine Karriere. 1995 kam der Filmregisseur David Hayman an James McAvoys Schule und hielt einen Vortrag. Im Anschluss konnten die Schüler Fragen stellen und der junge James nutzte die Chance. Sein Interesse an einem Beruf in der Film- und Fernsehbranche wuchs mit jeder Antwort, die er erhielt. Zum Schluss lud David Hayman den neugierigen Schüler zu einem Casting ein. McAvoy überzeugte und erhielt eine Rolle in Haymans "Die Hölle nebenan" (1995). Im Anschluss folgten - noch während seiner Schulzeit - einige kleinere Rollen in Filmen und TV-Serien.
Als James McAvoy sieben Jahre alt war, trennten sich seine Eltern, woraufhin er beschloss, bei den Großeltern in Glasgow aufzuwachsen. Später unterstützten diese seinen Entschluss, Schauspieler zu werden.
Nach dem Studium an der Scottish Academy of Music and Drama zog es ihn nach London, wo McAvoy mit kleineren Rollen und Gelegenheitsjobs für seinen Lebensunterhalt sorgte. In seiner Rolle als Leto Atreides II in der Miniserie "Dune" (2003) fuhr McAvoy einen Achtungserfolg ein. Die Karriere setzte sich mit der britischen Erfolgsserie "Shameless" und einem Auftritt in "Die Chroniken von Narnia: Der König von Narnia" fort. Im Jahr 2006 war McAvoy in dem Filmdrama "Der letzte König von Schottland" als Leibarzt von Idi Amin zu sehen. Die Rolle brachte ihm eine Nominierung für den Europäischen Filmpreis 2007 ein. Noch erfolgreicher war "Abbitte" (Europäischer Filmpreis 2008, Nominierung Golden Globe Award).
In "Wanted" mit Angelina Jolie zeigte McAvoy, dass er auch Action kann, und setzte später mit "Trance – gefährliche Erinnerung" die Messlatte in puncto Katz-und-Maus-Spiel noch ein Stück höher. Zu diesem Zeitpunkt war er bereits im Marvel Universum angekommen, da er in der X-Men-Filmreihe in die Rolle des jungen Professors Charles Xavier schlüpfte. Danach wurde es "wahnsinnig im Dreierpack", denn wie Regisseur M. Night Shyamalan damals den Cineasten mitteilte, sollte "Glass" die Handlungsstränge aus "Unbreakable" und "Split" zusammenführen. James McAvoy scheint ein Faible für gruslige Geschichten zu haben, denn auch im Kinohit "ES" (2019), der auf Stephen Kings Bestseller basiert, spielte er eine wichtige Rolle.