Corre el año de 1944, la Guerra Civil Española ya tiene cinco años de haber finalizado y Franco está en el poder. Ofelia (Ivana Baquero), una niña de 12 años viaja con Carmen (Ariadna Gil), su madre, a encontrarse en un pequeño y alejado pueblo con su padrastro, el capitán Vidal (Sergi López).
Una vez instaladas, Carmen pasa casi todo el día en cama pues su avanzado embarazo la mantiene sin fuerzas. Vidal, el padre de la criatura y padrastro de Ofelia no tiene tiempo para compartir con ella, sus horas están estrictamente dedicadas a aniquilar en toda España a los revolucionarios y anarquistas que todavía luchan contra el régimen de Franco.
Una noche, Ofelia -casi sin darse cuenta- comenzará a mezclar la terrible realidad con una no muy inspiradora fantasía y en un laberinto subterráneo conocerá a un misterioso y ambiguo fauno (Doug Jones); él le revelará a la pequeña que ella no es quien cree ser, que en realidad es la última princesa de su estirpe, su gente lleva mucho tiempo esperando su regreso y para poder hacerlo deberá pasar tres truculentas pruebas antes de que pase la luna llena.