El recién ordenado padre Amaro (Gael García Bernal), un joven de solo 24 años, es enviado por el obispo, con la intención de foguearlo para luego llevarlo a estudiar a Roma, a una pequeña parroquia en el pueblo de Los Reyes, como auxiliar del padre Benito (Sancho Gracia) en sus menesteres diarios. La corrupción de los gobernantes locales y del padre Benito, además del atractivo de la joven Amelia (Ana Claudia Talancón) crean una situación difícil para el joven religioso. Por otro lado, este mantiene una fluida comunicación con el obispo, que lo usa para imponer sus designios.
En efecto, el padre Amaro es destinado a la parroquia de Aldama, México. Al llegar es recibido por el padre Benito, quien mantiene una relación de larga data con la Sanjuanera (Angélica Aragón), que es la encargada de la fonda cercana a la iglesia, así como de las tareas domésticas de la casa parroquial. El padre Amaro poco a poco descubre los secretos del lugar, así como el lavado de dinero por parte de un líder narco, que es usado por la Iglesia para construir un hospital, la persecución a un cura tercermundista que convive con los campesinos, el padre Natalio (Damián Alcázar), entre otras cosas, además del romance del padre Benito.
La joven Amelia, hija de la Sanjuanera, mantiene una relación amorosa con Rubén (Andrés Montiel), a su vez hijo de don Paco, quien tiene ideas progresistas y anticlericales. Rubén, que es periodista, escribe para un diario regional, en el que escribe una nota donde revela la relación entre el padre Benito y El Chato, el jefe narco. Con esto se ve obligado, ante la presión de la Iglesia y de la propia gente, que llega a agredir a su padre, a dejar el lugar y trasladarse a la Ciudad de México.
Amelia se enamora del padre Amaro e intenta estar con él, y este termina cediendo a sus requerimientos. Es así que, con el tiempo, a través de un ardid del cura, comienzan una relación en secreto en un pequeño cuarto en la casa del sacristán, quien tiene una hija con trastornos motrices severos, a la que Amelia imparte clases de catecismo, mientras hacen creer que tomará los hábitos, siendo preparada por el joven sacerdote; esto en secreto con el sacristán. Amelia queda embarazada poco después y recibe como respuesta la inquietud de Amaro, que de ninguna manera acepta hacerse cargo de la situación.
Después de una celebración, el Sacristán le comenta al Padre Benito sobre la supuesta preparación de Amelia para ser religiosa y este se da cuenta al instante de la situación luego de lo cual, de inmediato confronta a Amaro y este, a su vez, intenta chantajear al Padre Benito con revelar al obispo su relación con la Sanjuanera si este hace lo mismo con él. En una tensa discusión con Amaro, el Padre Benito sufre un infarto y es trasladado a la Capital para ser intervenido quirúrgicamente quedándose Amaro a cargo de la parroquia (después de lo cual expulsa al Sacristán en represalia).