Kariera W wieku 16 lat trafił na szklany ekran jako James Steerforth w telewizyjnej adaptacji utworu Charlesa Dickensa BBC David Copperfield (1999) u boku Daniela Radcliffe'a i Maggie Smith. Następnie został obsadzony w roli młodego Riversa w ekranizacji powieści Jamesa Hiltona Żegnaj Chips (Goodbye Mr Chips, 2002).
W 2007 roku zadebiutował na scenie Trafalgar Studios w przedstawieniu A Gaggle of Saints, za występ w którym zebrał wiele pozytywnych recenzji. Grał także na scenie Theatre Royal Haymarket w spektaklu Edwarda Bonda Morze (The Sea, 2008).
W serialu BBC Doktor Who (Doctor Who, 2007) wystąpił w roli studenta Jeremy'ego Bainesa, którego umysł został przejęty przez gatunki cudzoziemców o nazwie Family of Blood. W serialu HBO Gra o tron (Game of Thrones, 2011) zagrał postać Viserysa Targaryena. Na kinowym ekranie można go było zobaczyć w niewielkiej roli Richarda Masona w dramacie Jane Eyre (2011) z Mią Wasikowską i Michaelem Fassbenderem, a także w dramacie biograficznym Phyllidy Lloyd Żelazna Dama (The Iron Lady, 2011) w roli młodego Denisa Thatchera.