Il s'est fait connaître du public en jouant Bucky Barnes dans Captain America: First Avenger. Son rôle dans la mini-série Political Animals lui a valu un Critics' Choice Television Award du meilleur second rôle. En 2015 il joue Chris Beck dans le film Seul sur Mars.
Il a passé un an à l'étranger pour étudier le théâtre au Shakespeare's Globe Theatre de Londres.
Il a fait toutes ses cascades lui-même dans le film Le pacte du sang.
Il a eu une liaison avec ses co-stars Leighton Meester (2008-2010) et Jennifer Morrison (2012-2013). En 2014 il entame une relation avec l'actrice Margarita Levieva mais ils rompent en 2016. En 2020 il se met en couple avec l'actrice Alejandra Onieva. Sa marraine est Anastasia Soare.
Il a joué dans le film Black Swan de Darren Aronofsky.