O jovem padre Amaro (Gael García Bernal) acaba de ser ordenado e em breve irá para Roma continuar seus estudos, graças à boa relação que mantém com o bispo. Antes, contudo, deve trabalhar em uma paróquia. Ele é enviado para Los Reyes para atuar sob as ordens do padre Benito (Sancho Gracia), o vigário que aparentemente vive uma existência corrupta e contraditória. Lá Amaro conhece a linda e devota Amelia (Ana Claudia Talancón), filha de Sanjuanera (Angélica Aragón), dona do restaurante mais importante da cidade e amante do padre Benito. Diante do mundo real, Amaro é confrontado com a hipocrisia da Igreja, que condena as guerrilhas mas convive com chefes do tráfico de drogas.