Not all angels are innocent.
Durante os anos 50, Pauline Parker (Melanie Lynskey) e Juliet Hulme (Kate Winslet) se conheceram na escola e na mesma hora se tornaram grandes amigas passando juntas, todo o tempo possível. Criativas, escreviam sobre uma terra cheia de sonhos e fantasias. Cada vez mais essa estranha ligação entre as duas adolescentes se tornava uma obsessão, a ponto de se afastarem da realidade e de suas próprias famílias. Com o tempo, a duas perceberam que eram muito diferentes das demais pessoas e concordaram em assumir qualquer risco para que nada no mundo pudesse separá-las. Em uma época extremamente moralista, as duas famílias aumentavam suas preocupações pois esse universo de sonhos e fantasias está prestes a se transformar em um assassinato cruel que chocou toda uma nação.