Appeared on the British television series Shameless as Fiona Gallagher. She starred as Violet Miller in Suffragette and Marie in Sanctuary. In 2019, she began starring in His Dark Materials alongside Lin-Manuel Miranda.
She was rejected from her first choice of drama school, eventually going on to study at the Drama Centre.
She received a 2010 BAFTA nomination for her work on the biographical film Nowhere Boy.
She married James McAvoy in 2006. They had a son named Brendan together before separating in 2016.
She starred in the British series The Virgin Queen, based on the life of Elizabeth Queen of England I.