Jego pierwszym profesjonalnym castingiem była rola w filmie Stranger at My Door (1991), chociaż grał w sztukach dla dzieci od czwartego roku życia. W 1993 roku film Człowiek bez twarzy, w którym wystąpił Mel Gibson, przyczynił się do rozwoju jego kariery w wieku 13 lat. W następnym roku zagrał drugoplanową rolę w filmie zbiorowym Safe Passage. W 1996 roku wcielił się w rolę Pucka w operze Benjamina Brittena Sen nocy letniej w Metropolitan Opera w Nowym Jorku. W 1998 roku zagrał skazanego na zagładę młodego żołnierza podczas II wojny światowej na Pacyfiku w filmie Cienka czerwona linia. W 2001 roku odniósł kolejny sukces kasowy dzięki roli w filmie W sypialni, w którym w roli jego matki wystąpiła Sissy Spacek. Kolejny sukces kasowy odniósł w filmie Terminator 3: Rise of the Machines (2003) jako John Connor (zastępując Edwarda Furlonga w Terminator 2: Judgment Day), u boku Arnolda Schwarzeneggera i Claire Danes. W 2003 roku wystąpił w serialu HBO Carnivàle, który zdobył wierną widownię i pochlebne recenzje. Show trwał dwa sezony, kończąc się w 2006 roku.
Stahl zagrał dwa czarne charaktery z dobrymi recenzjami: Bobby Kent w filmie Bully (2001) i Roark Jr./Yellow Bastard w Sin City (2005). Stahl nie powtórzył swojej roli Johna Connora w Terminator Salvation, gdzie zastąpił go Christian Bale. Stahl zauważył, że koncepcja filmu to „skok do przyszłości, więc będzie trochę starszy”. Inne role obejmowały Jak obrabować bank (2007), Sleepwalking (2008) i Quid Pro Quo (2008).
W 2010 roku Stahl wystąpił jako Max Matheson w Mirrors 2, sequelu Mirrors, wyreżyserowanym przez Victora Garcię i napisanym przez Matta Venne’a. Wśród jego nowszych filmów są On the Inside (2010) i Afghan Luke (2011), a także Away from Here (2014).
W 2019 roku Stahl sportretował seryjnego mordercę Glena Edwarda Rogersa w The Murder of Nicole Brown Simpson. Filmowanie rozpoczęło się latem w 2018 roku, a film został wydany w Wielkiej Brytanii 9 grudnia 2019 roku. Film opierał się na twierdzeniu Rogersa, że on sam zabił Nicole Brown Simpson zamiast O. J. Simpsona, byłego męża Brown i głównego podejrzanego, który wcześniej został osądzony i uniewinniony za morderstwo w 1995 roku. Film został szeroko spanikowany przez krytyków.
W 2019 roku Stahl pojawił się w filmie krótkometrażowym The Lumineers, III, który jest oparty na ich nowym albumie. Stahl zagrał postać Jimmy’ego Sparksa, który jest ojcem i uzależnionym od hazardu.
.