Né en Ecosse, John Hannah est le frère cadet de deux grandes soeurs. Il passe son enfance dans l'East Kilbride et va au lycée de Claremont pour apprendre le métier d'électricien. Ce sont les conseils éclairés de l'un de ses camarades de classe qui le poussent à se présenter, à l'issue de son apprentissage, à une école d'art dramatique, en l'occurrence la Royal Scottish Academy of Music and Drama de Glasgow. Une fois diplômé, il apparaît dans quelques productions au théâtre, au cinéma et à la télévision. C'est son apparition en jeune gay, amant du personnage incarné par le barbu Simon Callow dans 4 mariages et 1 enterrement qui le révèle, mais c'est la série "McCallum", dont il tient le rôle-titre