Principalement célèbre pour avoir incarné Legolas dans les films Le seigneur des anneaux et Le hobbit ainsi que Will Turner dans la série Pirate des Caraïbes. Il a également joué dans des films tels que Troie, Kingdom of heaven, et New York, I Love You. En 2019, il a débuté un rôle dans la série fantastique d'Amazon Carnival Row.
Avec sa sœur, il a participé lorsqu'il était enfant à des concours de lecture de poésie et de passages de la Bible. Il fut élevé dans la tradition de l'Eglise d'Angleterre.
Il fut nommé ambassadeur de bonne volonté de l'UNICEF en 2009.
Après le décès du mari de sa mère, le romancier anti-Apartheid Harry Saul Bloom, sa mère lui révéla que son vrai père était un ami de la famille, Colin Stone. Il fréquenta l'autre vedette star d'Elizabethtown Kirsten Dunst en 2005. Il a eu un fils nommé Flynn avec le mannequin Miranda Kerr, avec qui il fut marié de 2010 à 2013. Il s'est fiancé avec la pop star Katy Perry en 2019 et ils eurent ensemble une fille, Daisy, en août 2020.
Il a partagé l'afficha du film dramatique de 2010, Main Street, avec Colin Firth.