Il s'est fait connaître pour son rôle de Peter Beale dans le long feuilleton britannique EastEnders. Il a percé au cinéma en 2016 dans X-Men: Apocalypse. En 2018, il a joué le rôle de Roger Taylor dans Bohemian Rhapsody.
Il a fréquenté la Central School of Speech and Drama, où il a obtenu une licence en cinéma. Il a commencé sa carrière d'acteur au théâtre.
Connu à l'origine comme acteur de théâtre, il a joué le rôle d'Arthur dans la production théâtrale du West End de The Judas Kiss. Auparavant, il était apparu dans un épisode de Children in Need où il jouait son propre rôle.
Il est né à Bournemouth, dans le Dorset, en Angleterre, et a grandi à Sherborne. Il a été en couple avec Katriona Perrett pendant neuf ans. Il sort avec Jessica Plummer.
Il a travaillé aux côtés de Rupert Everett au Duke of York's Theatre de Londres pour la mise en scène de The Judas Kiss.