Antonio Márez is a six-year-old Chicano boy living in Guadalupe, New Mexico in the 1940s. He has a perceptive, questioning nature and vivid, sometimes prophetic dreams. His father Gabriel is a vaquero (cowboy) from the llano who prizes freedom and wandering, while his mother, María Luna, comes from a family of farmers and devout Catholics. Because of their conflicting personalities they have different dreams for Antonio's future. They take in Ultima, an old curandera (healing woman), and she and Antonio grow very close. Ultima teaches Antonio about herbs and the spirits of nature, and with her comes a watchful, comforting owl.
Antonio's trials begin when he witnesses the death of Lupito, a man driven mad by his experiences in World War II. After seeing death Antonio begins to wonder about punishment and hell. He starts school, where he has to learn English and is made fun of by the other kids, but his mother hopes he will be a "man of learning" and a priest. Antonio's brothers Andrew, Eugene, and León return from the war and seem changed. Gabriel wants to move to California with them, but they no longer feel at home and soon leave again.
One day a friend tells Antonio about the golden carp, a pagan god that lives in the river. Antonio also starts to feel more attached to the Virgin of Guadalupe than to God, who seems harsh and unforgiving. Tony's religious doubts grow when Ultima heals his uncle Lucas from a witch's spell after the priest failed to help him. The spell was cast by the daughters of Tenorio Trementina, a saloon owner who hates Ultima. Later Antonio actually sees the golden carp, and he feels a religious experience similar to what he had expected for his first communion. Then he learns that the carp also plans on punishing sinners with death, and he becomes more conflicted, as the carp seems like just another punishing god.
Tenorio threatens Ultima, and the family's friend Narciso, the town drunk, defends her against accusations of witchcraft. Ultima's owl tears out Tenorio's eye and he vows to kill both Narciso and Ultima. Tenorio's daughters get sick and he blames Ultima for that as well. On the way home from a Christmas pageant Antonio sees his brother Andrew at a brothel, and then he watches Tenorio kill Narciso and go unpunished. Antonio prays for Narciso's soul and is again disturbed by seeing death so close.
Antonio is excited about learning the catechism and taking his first communion, as he hopes for answers to his religious questions. His friend Florence is an atheist and raises many doubts about the unfairness of Catholic doctrine. Antonio finally has his first communion but is disappointed that no divine knowledge comes.
Ultima dispels spirits from the house of one of Gabriel's friends, again succeeding where a priest failed. Antonio sees the golden carp once more and decides to show it to Florence, but Florence drowns in a swimming accident that same day. Antonio is disturbed by the death and goes to learn farm work with his uncles, the Lunas. He grows and gathers strength there, but one day hears that Tenorio is pursuing Ultima again. Tenorio tries to kill Antonio, who narrowly escapes, and Tenorio reveals that he plans to kill Ultima's owl, which is the embodiment of her spirit. Antonio runs the ten miles home to warn her, but just as he arrives Tenorio kills the owl. Antonio's uncle Pedro kills Tenorio. Antonio goes to Ultima on her death bed and she is able to comfort and bless him before she dies. Antonio buries the owl as she requested, and he knows he is really burying Ultima. He realizes he must choose from the dreams of his childhood or else build a new dream for himself, and he resolves to create a new life and religion from the blend of cultures and beliefs that are a part of him.