Christian Bale como Bruce Wayne / Batman:Un multimillonario que se dedica a proteger a Ciudad Gótica del mundo criminal como un vigilante nocturno con aspecto de murciélago. Bale dijo que confiaba en su elección de repetir el papel debido a la respuesta positiva a su actuación en Batman Begins.[13]​ El actor continuó entrenando con el método de lucha Keysi y realizó la mayoría de sus propias escenas de riesgo,[13]​[14]​ pero no adquirió tantos músculos como en la primera película debido a que el nuevo Batitraje le permitía moverse con más agilidad.[15]​ Describió el dilema de Batman como «algo que tiene un final. ¿Puede renunciar y tener una vida ordinaria? El tipo de intensidad maníaca que alguien debe tener para mantener la pasión y el enojo que sintió de niño, toma un esfuerzo después de un tiempo, seguir haciendo eso. En cierto punto, tienes que exorcizar tus demonios.»[16]​ Luego agregó, «Ahora no solo hay a un joven dolorido que intenta encontrar una especie de respuesta, hay alguien que en verdad tiene poder, que está agobiado por ese poder, y debe reconocer la diferencia entre alcanzar ese poder y aferrarse a él.»[17]​ Bale sintió que la personalidad de Batman había sido fuertemente establecida en la primera película, así que era poco probable que su personaje fuera eclipsado por los villanos, diciendo: «No tengo problema con competir con alguien más. Y eso hará una mejor película.»[18]​Michael Caine como Alfred Pennyworth:El confiable mayordomo de Bruce. Su cantidad de consejos útiles para el protagonista y su semejanza a una figura paterna lo ha llevado a ser etiquetado el «ayudante [en inglés, batman] de Batman».[19]​[20]​Heath Ledger como Joker:Una maniática mente maestra del crimen que se describe a sí mismo como un «agente del caos», y se eleva al poder dominante aterrorizando a Gótica y sumiéndola en la anarquía. Antes de que el director confirmara a Ledger para el papel en julio de 2006, Paul Bettany,[21]​ Lachy Hulme,[22]​ Adrien Brody,[23]​ Steve Carrell[24]​ y Robin Williams[25]​ expresaron públicamente interés en él. Sin embargo, Nolan había querido trabajar con el actor en un número de proyectos en el pasado (entre ellos inicialmente acercarse a él para el papel de Batman en Batman Begins, pero no había sido capaz de hacerlo), y le agradó su interpretación caótica del personaje.[26]​ Cuando Ledger vio la primera película, se le ocurrió que una forma de que el personaje funciona y fuese consistente con el tono general:[27]​ describió a su Joker como un «payaso psicópata, asesino en masa y esquizofrénico con cero empatía.»[28]​ A lo largo de la cinta, el villano muestra su deseo de alterar el orden social por medio del crimen, y se define a sí mismo por su conflicto con Batman. Para prepararse para el papel, Ledger vivió solo en un cuarto de hotel por un mes, formulando la postura, la voz y la personalidad del personaje, y escribió un diario, donde anotaba los pensamientos y sentimientos del Joker.[18]​[29]​ Mientras al principio lo encontró difícil, finalmente generó una voz distinta a la de la encarnación de Jack Nicholson en la película de Tim Burton de 1989 Batman.[28]​[29]​ También le dieron Batman: The Killing Joke y Arkham Asylum: A Serious House on Serious Earth, los cuales «en verdad trató de leer y los dejó.»[27]​ Citó además a La naranja mecánica y a Sid Vicious como «un primer punto de partida para Christian [Bale] y yo. Pero nos alejamos de eso bastante rápido y entramos en otro mundo completamente.»[30]​[31]​ «Hay un poco de todo en él. No hay nada muy consistente», Ledger dijo, y agregó, «Hay algunas sorpresas más para él.»[30]​ El actor pudo rodar y en su mayoría dirigir los videos que el Joker envía como advertencias. Cada toma que hizo era diferente de la anterior. Nolan quedó tan impresionado con el primer video que decidió no estar presente cuando rodara el video con el reportero secuestrado.[32]​ El 22 de enero de 2008, después de haber completado el rodaje de The Dark Knight, Heath Ledg

Question: ¿Qué hace ser Batman difícil?
Answer: mantener la pasión y el enojo que sintió de niño,