Es actor de teatro y cine, nació en Glasgow, Escocia. Su padre es James McAvoy, quien durante toda su vida fue constructor, y su madre, Elizabeth Johnstone era enfermera. A los 7 años sus padres se separaron y él vivió con sus abuelos maternos en Drumchapel. Perdió todo el contacto con su padre, mientras que con su madre era intermitente.
En 2004, interpretó al ladrón de autos Steve McBride en la exitosa serie de televisión británica Shameless (2004) y en 2005 a Mr. Tumnus, el fauno, en la adaptación de Disney de Las crónicas de Narnia (2005). Se integró al elenco de El último rey de Escocia (2006) y a Expiación y más allá de la pasión (2007).
En 2013 llegó uno de los papeles más importantes de su carrera: Bruce Robertson, un policía corrupto en Filth, el sucio (2013). Como un British Independent Film a mejor actor, el Premio del Círculo de críticos de Londres como Actor del año y el Premio Empire a mejor actor. Otro personaje que aumentó su popularidad fue el Profesor Charles Xavier de los X-Men, papel que ha repetido en dos ocasiones: X-Men: Días del Futuro Pasado (2014) y X-Men: Apocalipsis (2016) Y tuvo la oportunidad de trabajar con Anne Hathaway en una película.
Es casado con la actriz Anne-Marie Duff, James McAvoy se declara fan de la ciencia ficción y adora todas las series y películas de Star Trek y Battlestar Galactica. Además, es un gran aficionado al fútbol y siempre que puede acude al estadio para animar al Celtic de Glasgow.