Il film è ambientato nella Spagna franchista degli anni 40, dove l’esercito sta affrontando gli ultimi atti della guerra civile.
Carmen (Aridna Gil) si è risposata da poco con il capitano dell’esercito di Franco. Un uomo freddo e autoritario, Vidal (Sergi Lóp). Carmen è in incinta e sta vivendo una gravidanza difficile, ma nonostante la pericolosità dell’affrontare un lungo viaggio il capitano le ordina di raggiungerlo assieme alla sua prima figlia Ofélia (Ivana Baquero) (frutto del precedente matrimonio) al mulino, un vecchio casolare, che sarà la loro nuova residenza.
Per Ofelia accettare questa nuova vita e sempre più difficile, la madre vorrebbe obbligarla ad amare come padre un uomo cattivo e violento e che abbandonasse quello che sono i suoi sogni per compiacerli entrambi. Per sopravvivere a questa situazione insopportabile la bambina si rifugia in un misterioso labirinto, dove incontra un Fauno, una creatura magica che ne è il guardiano. Quella strana creatura rivela ad Ofelia le sue origini reali, lei era principessa di un regno magico sotterraneo ma per poter riprendere il ruolo di principessa dovrà affrontare tre prove molto pericolose.
Dalla crudeltà di un ambiente militare franchista e della lotta contro il potere da parte dei rivoltosi all’ideale innocenza infantile di Ofelia che nonostante la paura dona se stessa e vive sino all’ultimo atto per quello in cui crede e ama.