Nell'anno 1193 a.C., Agamennone (Brian Cox) è il re dei Greci ed ha il dominio su tutte le nazioni greche, fatta eccezione della Tessaglia. Solo la città di Troia, conosciuta per le sue potenti mura di difesa, rimane intoccabile.
La storia inizia con una battaglia fra l'esercito di Micene guidato da Agamennone e l'esercito della Tessaglia guidato da Triopa (Julian Glover), schierati in una piana. Ma per risparmiare centinaia dei propri guerrieri, i due re mettono in campo i loro campioni, che rappresentano le fazioni in lotta per la Tessaglia. Contro l'enorme campione della Tessaglia, Agammennone chiama Achille, che vince con grande facilità. Palese è comunque la sua insofferenza per Agamennone e per la propria posizione di subalterno a costui.
Una delegazione di Troiani, guidata dai due figli di re Priamo, Ettore e Paride, si trova a Sparta per dei negoziati di pace tra le due città. Durante i colloqui di pace l'appassionata relazione tra il giovane principe Paride (Orlando Bloom) ed Elena (Diane Kruger), moglie di Menelao, re di Sparta e fratello di Agamennone.
Durante il viaggio di ritorno, Paride svela di aver portato con sé Elena, con grande furia di Ettore: sa che Agamennone e Menelao coglieranno il pretesto per muovere ancora guerra a Troia. Nonostante ciò la giovane viene accolta con grande cortesia a nella città, le cui mura si presume resisterebbero a qualunque battaglia.
Come previsto, Agamennone sta radunando un esercito contro Troia, e manda Ulisse (Sean Bean) a reclutare Achille: costui è riluttante a porsi nuovamente sotto il comando di Agamennone, con cui non corre buon sangue, ma Ulisse blandisce il cugino di Achille, Patroclo (Garrett Hedlund), con le meraviglie della guerra per convincerlo ad unirsi all'esercito, sapendo che Achille non lo avrebbe lasciato andare da solo. Ancora indeciso, Achille viene avvertito dalla madre, la Dea Teti (Julie Christie): lui può scegliere se vivere a lungo restando in patria o andare a cercare la gloria e morirvi dopo averla trovata. Rinfrancato dalla promessa della gloria eterna, sceglie la seconda opzione e con 50 mirmidoni si imbarca per raggiungere Troia, assieme ad una flotta di oltre mille navi greche.
Achille ed i suoi guerrieri, reclutati direttamente da Agamennone, svolgeranno un ruolo cruciale nell'invasione, sebbene contrastati dall'esercito dei troiani comandato da Ettore. Achille attacca le spiagge di Troia per primo e raggiunge il tempio di Apollo, uccidendo tutti i sacerdoti: per manifestare il suo supremo sprezzo nei confronti del fato, alla domanda di un suo sottoposto che chiede se la loro azione non sia stata blasfema, con la spada decapita la statua dello stesso Apollo. All'avvicinarsi di un gruppo di cavalieri guidati da Ettore, il principale difensore di Troia, Achille scaglia un giavellotto con tale forza da perforare di netto lo scudo ed il corpo di Tettone (Mark Lewis Jones), compagno dell'eroe troiano, che crolla da cavallo. Ettore scaglia a sua volta contro Achille il suo giavellotto ma fallisce il colpo; poi, insieme ai suoi guerrieri, insegue l'acheo all'interno del tempio. Dopo una furiosa battaglia, Achille lo vede battersi con grande valore ed alla fine gli intima di andarsene, perché non è ancora l'ora di morire. Ettore se ne va, mentre Achille viene raggiunto dagli altri greci, tra cui Aiace (Tyler Mane), Menelao ed Agamennone, felici della vittoria che ha ricacciato i troiani, in un giorno appena, dentro le loro mura.
Achille ha ricavato una schiava dalla battaglia, Briseide (Rose Byrne), sacerdotessa di Apollo e cugina dei principi Ettore e Paride. Costei si ribella dapprima al suo aguzzino, che però si comporta in maniera molto gentile con lei ed i due cominciano a capire l'uno il punto di vista dell'altra. Venuto a conoscenza però della schiava, Agamennone la reclama per sé ed è solo grazie all'intervento di Briseide che Achille non uccide il re: furioso, il guerriero si rifiuta di combattere finché non gli verrà restituita la ragazza, ma Agamennone non cede.
Il giorno dopo i greci attaccano le mura di Troia, convinti di poter sfondare le difese nemiche, ma Paride fa una proposta al nemico: invece di lanciarsi in una battaglia sanguinosa, che costerebbe centinaia di vittime, il possesso di Elena verrà deciso da un duello all'ultimo sangue tra lui e Menelao. Agamennone non è contento di questa soluzione, perché per lui significa tornare a casa a mani vuote, ma il fratello lo convince a lasciare che la contesa abbia luogo e ad attaccare Troia una volta che lui si sia vendicato di Paride. Lo scontro è impari: il colossale Menelao, inveendo contro Elena che osserva il duello dagli spalti, sconfigge Paride e tenta di ucciderlo, se non che Ettore lo difende ed uccide il greco con un colpo di spada.
A quel punto Agamennone ordina l'attacco e comincia la battaglia; Ettore porta Paride in salvo dentro le mura di Troia, poi ritorna sul campo e riesce con non poca fatica ad uccidere il gigantesco Aiace Telamonio. La battaglia diventa così una disfatta per i greci, tanto che Agamennone dà l'allarme ed i suoi fuggono terrorizzati. Infine, gli arcieri di Agamennone cominciano ad attaccare i fanti troiani dalle retrovie, ma essi, rapidi, riescono a non essere trafitti riparandosi a testuggine. Terminata la battaglia, ognuno dispone dei propri morti secondo le usanze, per tutta la notte.
Frattanto, Achille viene a sapere che Agamennone ha consegnato Briseide ai soldati della truppa, perché si riprendano dalla giornata fallimentare. Mentre alcuni soldati achei tentano di usarle violenza, Achille arriva e la salva e mentre uno di loro sta per marchiarla con un tizzone rovente glielo strappa di mano e glielo conficca nel collo, colpendo con il manico anche l'altro complice e gettandolo al suolo. Poi conduce la giovane sacerdotessa troiana all'interno del suo accampamento. Tra Achille e Briseide scoppia la passione, che viene consumata nella tenda dello stesso Achille, nell'accampamento greco.
I troiani nel frattempo decidono di contrattaccare i greci, per cacciarli via anche dalle spiagge. La battaglia inizia con il lancio di frecce incendiarie sulle dune della spiaggia: quella che sembra un'azione senza senso diventa chiara poco dopo, quando vengono lanciate dai versanti balle di fieno e sostanze incendiarie, che una volta passate sopra le frecce ancora accese, piombano come meteore nell'accampamento avversario. Durante la battaglia, lo spirito dei greci viene rinfrancato alla vista di Achille, finalmente ritornato a combattere e completo di tutta la sua armatura, che riprendere il suo posto tra l'esercito greco. Ettore si prepara, con un urlo tremendo lancia i suoi all'attacco e lo stesso fa Ulisse con i suoi Itacesi ed Achille con i Mirmidoni. Ettore uccide alcuni achei; Achille fa scempio di molti compagni del principe troiano fino a che Ettore, dopo un rapido duello, gli taglia la gola con la spada. Achille cade a terra, Ettore gli toglie l'elmo per farlo proprio, ma scopre con stupore che il suo viso non è quello che si aspettava; dopo avergli dato il colpo di grazia, lui e Ulisse ordinano la fine delle ostilità per quel giorno. Ulisse rivela ad Ettore che il ragazzo ucciso è Patroclo, che aveva rubato l'armatura al cugino per spacciarsi per lui e lo avverte che Achille sarà furioso non appena saprà la notizia.
Infatti, Achille s'infuria ed arriva sotto le mura di Troia, urlando ad Ettore di venire fuori. Il principe troiano saluta l'amata moglie ed il figlio ed esce dalle mura, ma lo scontro è impari ed Ettore viene infine ucciso: Achille però, folle di dolore per la perdita del cugino, lo lega per i piedi dietro il suo carro e lo trascina nella polvere al piccolo trotto sotto gli occhi del padre, della moglie e di tutto il suo popolo. Infine il corpo di Ettore viene portato nel campo greco, straziato e lasciato nella polvere dinanzi alla tenda del giovane guerriero acheo. La notte, nella tenda di Achille arriva il Re Priamo (Peter O'Toole), che, baciando le mani di Achille, gli supplica di ridargli il figlio morto perché possa dargli esequie adatte. Lui, commosso dal coraggio e dalle suppliche del re, acconsente, pentendosi dell'atto compiuto, concedendogli 12 giorni di onoranze funebri in cui l'esercito acheo non avrebbe attaccato e sussurra ad Ettore defunto: «Ci rincontreremo presto, fratello».
In questo periodo, ad Ulisse, vedendo un soldato che intaglia un piccolo cavallo di legno destinato al proprio figlio, viene un'idea. Una mattina, le spiagge davanti a Troia sono deserte, tranne per alcuni greci apparentemente morti di peste, mentre un'enorme cavallo di legno resta tra i relitti di alcune navi: un greco lasciato a terra giura che sia un'offerta dei greci a Poseidone per un ritorno sicuro a casa.
A quel punto i troiani, nonostante qualche dissenso, lo portano dentro le mura, ma non sanno che è una trappola in quanto nel cavallo ci sono alcuni soldati greci; altri, nel frattempo, si sono nascosti con la flotta in un'insenatura. Un cavaliere troiano li vede, sgomento, ma prima che possa fuggire a dare l'allarme viene colpito da una freccia.
La notte i greci escono dal cavallo, attaccano le sentinelle ed aprono la porta alla massa di soldati sbarcata nel frattempo. È un successo pieno e Troia viene data alle fiamme. Anche Achille corre per la città, alla ricerca di Briseide, che era ritornata con Priamo.
Priamo viene ucciso da Agamennone, mentre nel frattempo alcuni troiani, tra cui Elena e Andromaca (Saffron Burrows), scappano da un passaggio segreto verso il mare. Ad uno di loro viene data la spada dei re di Troia, usata senza successo da Paride contro Menelao, con il compito di rifondare la loro città perduta. Il giovinetto si chiama Enea (Frankie Fitzgerald).
Briseide viene trovata da Agamennone, che la minaccia di costringerla a venire con lui in Grecia per fargli da schiava, ma con un atto di coraggio lo trafigge al collo con un pugnale. Due greci lì vicino, osservata la scena, prendono di forza la giovane troiana, ma prima che possano ucciderla arriva Achille che sgozza il primo e trafigge al petto il secondo, liberando Briseide. I due amanti sono finalmente riuniti, ma in quel momento Paride, equivocando la scena, afferra una freccia, la tende nell'arco e la scaglia contro Achille, colpendolo al tallone sinistro. Achille urla, ma la ferita non è grave, per cui si volta per affrontare Paride: questi però gli bersaglia il petto di frecce ed Achille, ormai moribondo, riesce a strapparsi tutte le frecce dal corpo tranne l'unica che aveva nel tallone. È così che lo trovano i soldati, accorsi sul luogo delle grida, mentre Briseide viene portata via dal cugino.
Troia è finalmente rasa al suolo ed il mattino dopo un'alta pira viene eretta in una delle piazze per Achille, con Ulisse riflessivo che prepara il suo corpo per la cremazione e gli sussurra un'ultima frase: «Trova la tua pace, fratello». Mentre il fuoco brucia alto nel cielo, si sente ancora una volta la voce di Ulisse che dice: «Se mai si racconterà la mia storia; si dica che ho camminato con i giganti. Gli uomini sorgono e cadono come grano invernale ma questi nomi non periranno mai; si dica che ho vissuto al tempo di Ettore, domatore di cavalli. Si dica che ho vissuto al tempo di Achille».