Китай, 1937 рік. Американський трунар Джон Міллер (Крістіан Бейл), який нещодавно втратив маленьку доньку, оплакує своє горе, випиваючи без міри. Замовлення приводить його в тодішню столицю Китаю місто Нанкін у самий розпал другої японо-китайської війни, коли японці захоплюють місто і влаштовують там різанину. Протягом кількох тижнів японські війська тероризують місто. Поховавши місцевого священика, Міллер знаходить притулок у спорожнілому католицькому храмі.
Туди ж прибігають китайські дівчатка, які рятуються від солдатів і раніше ходили в церковну школу. Міллер вимагає оплату в молодого китайця Джорджа, який доглядає за дітьми (Хуанг Тіан Юань /Huang Tianyuan). Той не може йому нічого дати: у них немає ні грошей, ні батьків. Тоді Міллер починає нишпорити по храму в пошуках чогось цінного, що можна забрати як гонорар. У цей момент у пошуках порятунку в храм стукають тринадцять ефектних куртизанок. Міллер виявляється вражений красою однієї з куртизанок на ім'я Ю Мо (Ні Ні / Ni Ni), і та відповідає йому взаємністю.
Незважаючи на те, що в минулому вони жили в різних світах, тепер, щоб вижити, школярки і жриці кохання укладають союз. Однак стіни храму не витримують натиску армії. Коли до храму вриваються японські військові, Міллер одягає сутану священика і несподівано для себе намагається захистити дівчат, які ховаються в підвалі. Йому вдається відстрочити їхню загибель, але повернення солдатів є лише питанням часу.