Nato in Germania da madre irlandese e padre tedesco, dopo un’infanzia cattolica in Irlanda, studia a Londra e più tardi si trasferisce a Los Angeles dove comincia la carriera d’attore.
La sua gavetta parte proprio dalle serie per la tv. A soli 24 anni sarà tra gli interpreti di Hearts and Bones telefilm diretto da Roger Goldby, e Band of Brothers di Tom Hanks e Steven Spielberg. Tra il 2002 e il 2006 sarà ancora sul piccolo schermo nel cast di Holby City di Simon Massey, NCS Manhunt di Paul Unwin e Michael Whyte. Nel mentre partecipa anche a delle fiction come Sherlock Holmes and the Case of the Silk Stocking di Simon Cellan Jones con Rupert Everett o Our Hidden Lives di Michael Samuels.
Ma il suo primo incontro col grande schermo con il film Angel - La vita, il romanzo di François Ozon con Romola Garai, Sam Neill e Charlotte Rampling, che riguarda la vita di un'eccentrica autrice inglese del XX secolo, dove vestirà i panni di un pittore innamorato, Esmé.
Nel 2006 sarà nel cast hollywoodiano di 300 per la regia di Zack Snyder con Gerard Butler, Lena Headey, David Wenham e Dominic West. Da lì a poco il regista Steve McQueen lo sceglierà per interpretare un prigioniero in Hunger. Film che gli farà vincere il British Independent Film Award, nonché la nomination come miglior attore per l’European Film Award.
Nel 2009 Quentin Tarantino lo vorrà nel suo film Bastardi senza gloria nei panni del tenente inglese Archie Hicox. Così come lo vorrà ancora nel cast di Django Unchained nel 2013 insieme a Leonardo DiCaprio e Samuel L. Jackson. Dopo la sua interpretazione di Quintus Dias nel film Centurion, si cimenterà nell’horror Blood Creek di Joel Schumacher. Passerà poi da ruoli prettamente romantici come quello di Edward Rochester nell’adattamento per il cinema del romanzo Jane Eyre, diretto da Cary Fukunaga, a quelli da fanta-adventure come Magneto in X-Men - L'inizio.