C'est en accompagnant, à l'âge de 13 ans, sa meilleure amie à une audition qu'elle décide de devenir actrice{{refsou}}. Avant son rôle phare dans L'Esquive, elle convainc un agent de l'embaucher et passe des castings tous les mercredis et week-ends.
En 2004, elle est révélée par son premier rôle dans L'Esquive, celui de Lydia, quinze ans, jeune fille de cité HLM répétant une pièce de Marivaux pour une représentation de fin d'année scolaire. Son interprétation lui vaut le César du meilleur espoir féminin. En 2006, elle interprète Hell, l'héroïne tragique et perdue du film éponyme de Bruno Chiche.
Elle joue au théâtre, en 2007, dans une pièce de Florian Zeller et réalise trois courts métrages intitulés : Ça se voit direct, Un de toi et T MOI.
Elle est aussi lectrice, pour les éditions Thélème, du roman La Chamade de Françoise Sagan.
Dans Gainsbourg, vie héroïque (Joann Sfar, 2009), elle tient le rôle de France Gall. La même année, elle tient le rôle principal dans Le Nom des gens (2010), film de Michel Leclerc présenté en ouverture de la Semaine de la critique au {{63e}} Festival de Cannes. Elle y joue Bahia Benmahmoud, le rôle d'une jeune femme extravertie qui choisit d'avoir des relations sexuelles avec des hommes ayant une opinion politique différente de la sienne pour les convertir à sa cause. On la voit notamment aux côtés de Lionel Jospin, dans une apparition pleine d'autodérision de la part de l'homme politique. Pour sa prestation, elle reçoit le César de la meilleure actrice en 2011.
En 2013, elle joue dans Suzanne, de Katell Quillévéré. Elle y interprète Suzanne, aux côtés d'Adèle Haenel et de François Damiens. {{refnec}} et elle est récompensée par le Valois de la meilleure actrice au Festival du film francophone d'Angoulême 2013. Elle est aussi nominée dans la catégorie Meilleure actrice aux César 2014 pour ce même rôle.