Prima sa distribuție profesională a fost în Stranger at My Door (1991), deși juca în piese de teatru pentru copii încă de la vârsta de patru ani. Filmul The Man Without a Face din 1993, cu Mel Gibson în rol secundar, a contribuit la impulsionarea carierei sale la vârsta de 13 ani. În anul următor, a avut un rol secundar în filmul de ansamblu Safe Passage. În 1996, a interpretat rolul lui Puck în opera Visul unei nopți de vară a lui Benjamin Britten la Metropolitan Opera din New York. În 1998 a jucat rolul unui tânăr soldat condamnat în timpul celui de-al Doilea Război Mondial din Pacific în filmul The Thin Red Line. A înregistrat din nou un succes de critică și de box office cu rolul său din 2001 în filmul In the Bedroom, în care Sissy Spacek a jucat rolul mamei sale. A obținut un alt succes de box office în Terminator 3: Rise of the Machines (2003) în rolul lui John Connor (înlocuindu-l pe Edward Furlong în Terminator 2: Judgment Day), în care a jucat alături de Arnold Schwarzenegger și Claire Danes. În 2003, a jucat în serialul HBO Carnivàle, care a atras un public loial, precum și recenzii foarte bune. Serialul a durat două sezoane, încheindu-se în 2006.
Stahl a interpretat doi răufăcători care au primit recenzii bune: Bobby Kent în filmul Bully (2001) și Roark Jr./Yellow Bastard în Sin City (2005). Stahl nu și-a reluat rolul lui John Connor în Terminator Salvation, rolul fiind preluat în schimb de Christian Bale. Stahl a menționat conceptul filmului ca fiind „un salt în viitor, așa că va fi destul de bătrân”. Alte roluri au inclus How to Rob a Bank (2007), Sleepwalking (2008) și Quid Pro Quo (2008).
În 2010, Stahl a jucat rolul lui Max Matheson în Mirrors 2, continuarea filmului Mirrors, regizat de Victor Garcia și scris de Matt Venne. Printre filmele sale mai recente se numără On the Inside (2010) și Afghan Luke (2011), precum și Away from Here (2014).
În 2019, Stahl l-a interpretat pe criminalul în serie Glen Edward Rogers în The Murder of Nicole Brown Simpson. Filmările au început în vara anului 2018, iar filmul a fost lansat în Marea Britanie pe 9 decembrie 2019. Filmul s-a bazat pe afirmația lui Rogers că el însuși ar fi ucis-o pe Nicole Brown Simpson în locul lui O. J. Simpson, fostul soț al lui Brown și principalul suspect, care fusese anterior judecat și achitat pentru crimă în 1995. Filmul a fost respins pe scară largă de critici.
În 2019, Stahl a apărut în scurtmetrajul The Lumineers, III, care se bazează pe noul lor album. Stahl a interpretat personajul Jimmy Sparks, care este un tată și dependent de jocuri de noroc.
.