Johnson began performing at age six and has appeared in films such as Shanghai Knights (2003), playing a young Charlie Chaplin, The Illusionist (2006) and Angus, Thongs and Perfect Snogging (2008). He had his breakthrough performance in the John Lennon biopic Nowhere Boy (2009). He went on to portray Ben in the Oliver Stone-directed crime thriller Savages (2012), Russian aristocrat Count Vronsky in Joe Wright's adaptation of Anna Karenina (2012) and Lt. Brody in Gareth Edwards' monster movie Godzilla (2014). For his performance as psychopathic drifter Ray Marcus in Tom Ford's thriller Nocturnal Animals (2016), he won the Golden Globe Award for Best Supporting Actor – Motion Picture and was nominated for the BAFTA Award for Best Actor in a Supporting Role.