Hans första professionella rollbesättning var i Stranger at My Door (1991), även om han hade spelat i barnpjäser sedan han var fyra år gammal. Filmen The Man Without a Face från 1993, med Mel Gibson i huvudrollen, bidrog till att sätta fart på hans karriär när han var 13 år gammal. Året därpå hade han en biroll i ensemblefilmen Safe Passage. År 1996 spelade han rollen som Puck i Benjamin Brittens opera A Midsummer Night’s Dream på Metropolitan Opera i New York. År 1998 spelade han en dödsdömd ung soldat under andra världskrigets Stillahavskrig i The Thin Red Line. Han gjorde återigen succé både i kritikerkåren och på biograferna med sin roll i filmen In the Bedroom från 2001, där Sissy Spacek spelade hans mamma. Han fick ytterligare en kassasuccé i Terminator 3: Rise of the Machines (2003) som John Connor (som ersatte Edward Furlong i Terminator 2: Judgment Day), tillsammans med Arnold Schwarzenegger och Claire Danes. År 2003 spelade han huvudrollen i HBO-serien Carnivàle, som drog till sig en trogen publik och fick mycket goda recensioner. Serien varade i två säsonger och slutade 2006.
Stahl har spelat två skurkar med goda recensioner: Bobby Kent i filmen Bully (2001) och Roark Jr./Yellow Bastard i Sin City (2005). Stahl återupptog inte sin roll som John Connor i Terminator Salvation då Christian Bale tog över i stället. Stahl noterade att filmens koncept var ”ett hopp till framtiden, så jag kommer att vara ganska mycket äldre”. Andra roller var bland annat How to Rob a Bank (2007), Sleepwalking (2008) och Quid Pro Quo (2008).
Under 2010 spelade Stahl huvudrollen som Max Matheson i Mirrors 2, uppföljaren till Mirrors, regisserad av Victor Garcia och författad av Matt Venne. Bland hans nyare filmer finns On the Inside (2010) och Afghan Luke (2011) samt Away from Here (2014).
Under 2019 porträtterade Stahl seriemördaren Glen Edward Rogers i The Murder of Nicole Brown Simpson. Inspelningen påbörjades under sommaren 2018 och filmen släpptes i Storbritannien den 9 december 2019. Filmen baserades på Rogers påstående att han själv hade dödat Nicole Brown Simpson istället för O. J. Simpson, Browns före detta make och huvudmisstänkt som tidigare hade ställts inför rätta och frikänts för mordet 1995. Filmen blev allmänt kritiserad av kritikerna.
Under 2019 medverkade Stahl i The Lumineers kortfilm III, som är baserad på deras nya album. Stahl spelade karaktären Jimmy Sparks, som är pappa och spelmissbrukare.