Elle joue ensuite aux côtés de Heath Ledger dans Ned Kelly (2003), de Gregor Jordan, avant d'interpréter Violette Baudelaire, un des personnages principaux du film Les Désastreuses Aventures des orphelins Baudelaire (2004), de Brad Silberling, qui devient alors le plus gros succès de sa carrière et qui lui offre un deuxième Australian Film Institute Award, celui de la meilleure actrice, en 2005. Elle refuse ensuite le rôle de Bella Swan, finalement été attribué à Kristen Stewart, dans la saga à succèsTwilight.
En 2011, on la retrouve dans la nouvelle superproduction de Zack Snyder, Sucker Punch, où elle joue le rôle principal, Babydoll, aux côtés de Vanessa Hudgens, Abbie Cornish, Jamie Chung et Jena Malone. Elle y interprète trois titres sur la bande originale : une reprise de Sweet Dreams d'Eurythmics, une de Where is my mind des Pixies et une d'Asleep des Smiths.
Elle est actuellementen couple avec Max Irons.











