In the year 1944, during the aftermath of the Spanish Civil War, Ofelia (Ivana Baquero) and her mother, Carmen (Ariadna Gil), who is pregnant, move to a small village where Carmen’s new husband, Vidal (Sergi López), a cruel captain in the Francoist army, has been stationed. The young girl feels no affection towards him. Vidal’s mission is to eliminate the last members of the Republican resistance who remain hidden in the mountains of the area. Living in the vicinity are Mercedes (Maribel Verdú), the housekeeper, and the doctor (Álex Angulo), who takes care of Carmen’s delicate health condition. One night, Ofelia discovers the ruins of a labyrinth and encounters a faun (Doug Jones), a strange creature that reveals a surprising truth: she is actually a princess, the last of her lineage, and her people have been awaiting her arrival for a long time. In order to return to her magical kingdom, the girl must face three challenges.