NOTE: This spoiler was submitted by Jeremy.
The year is 1987 in Boise, Idaho. Football coach Jim White (Kevin Costner) is chastising his players for a rather underwhelming game. One of his players starts to give off a bit of an attitude. After having had enough, Jim orders the player to leave. When he doesn't, Jim throws a shoe at a locker, which bounces off and strikes the player in the face, cutting his cheek.
Following this incident, Jim is forced to move away with his wife Cheryl (Maria Bello) and two daughters, Julie (Morgan Saylor) and Jamie (Elsie Fisher). They settle down in McFarland, California in a predominantly Hispanic neighborhood. On their first night there, the family goes to a small restaurant and leaves to find a large gathering of Latinos in cars surrounding the place. One man makes suggestive motions toward Julie, prompting the family to leave faster.
Jim starts his new job as the life science teacher/PE and football coach assistant at school the next Monday. He meets Principal Camillo (Valente Rodriguez), who pairs Jim up with the current football coach. Jim later sends the students to do a lap, while three boys, the Diaz brothers - Danny, Damacio, and David (Ramiro Rodriguez, Michael Aguero, and Rafael Martinez) - are forced by their mother to leave.
The football team plays a game against another school. One of the players, Johnny Sameniego (Hector Duran), gets injured on the field. The coach wants him to get back out there, but Jim orders Johnny to sit this one out. The home team then loses the game to an embarrassing 63-0.
As the family continues to adjust, Jim's neighbor gives him a rooster as a gift. He goes to the store to buy it some feed. Outside, he sees some of his students drinking water from a hose. A man named Javi (Rigo Sanchez) picks up his nephew Victor Puentes (Sergio Avelar). The other boys tell Jim that Javi just "got out" while Victor's dad is still in there.
The coach complains to Camillo about Jim's actions during the game and demands that he step down. Jim later sits out on the bleachers and watches the boys run a lap around the track with Jamie joining him. She comments that the boys, particularly Victor and Johnny (who got cut from the football team) move very fast. This sparks an idea in Jim.
Jim goes to Camillo to convince him to let him start a track team to compete in the upcoming state championships. Jim also enlists Johnny's help to recruit six more runners for the team, starting with Victor. Johnny also asks the Diaz brothers, as well as two other students - Jose Cardenas (Johnny Ortiz) and Thomas Valles (Carlos Pratts). Thomas has gotten in trouble at school for being involved in altercations with other boys that mocked his younger sister for getting pregnant, so Jim negotiates for him to join the team to avoid suspension. Although the boys are initially reluctant, they agree to join the team and run with Jim across the town, with Danny lagging behind as he is the fattest of the team.
After some training, the team goes to their first meet in Palo Alto. The boys from the other teams taunt the McFarland team with derogatory comments. The race commences, and the McFarland team lands in the final spot. Knowing the boys are disappointed, Jim takes full responsibility for the loss to not let them get discouraged.
Jim learns of some of the boys' personal issues during their practice session. Thomas expresses his frustration due to his not seeing a better way out for himself and that he and his friends are only suited to picking fruits and vegetables in the fields all day. At home, Thomas's father has returned after a long absence. Thomas returns home one afternoon to find his parents arguing. His father starts punching the wall, and Thomas runs in to stop him.
Jim takes up a lot of practice time that it causes him to be late for a birthday dinner for Julie, and he forgets to pick up a cake for her. She goes to her room, angry and disappointed. Jim later drives by a bridge and sees Thomas sitting over it. He approaches the boy and notices a bruise on his eye, which Thomas says was his own fault because he tried to stop his dad from hurting his hands so that he could keep working. Jim talks the boy down and tells him that he has good things ahead of him, encouraging him to continue doing something worthwhile.
The Diaz brothers are pulled out of the team by their father, who wants them to keep working the fields. Jim goes to their home and offers his services to them. He even gets up as early as they do to go to the fields to pick produce in the blazing sun. By the end of the day, Jim is exhausted.
The team goes up for another race to qualify for the championships. Danny notices the hill they must run over is VERY tall, to his dismay. The team competes, and they manage to just break into the top four teams, enough to qualify. Meanwhile, a coach from Palo Alto gives Jim a card in case he is interested in an open full-time position.
Cheryl befriends Javi's girlfriend Lupe (Martha Higareda) when her car breaks down in the streets. Lupe invites Cheryl into her salon for a free manicure while Javi fixes the car. The Diaz family later shows up to the White home to make tamales and organize a car wash for team fundraisers. The Diaz matriarch says the team ought to use better uniforms and shoes. She says Jim is a good man, and then tells him to go take a shower.
The team continues to practice harder, allowing Jim to bond with the boys. They name their team the McFarland Cougars. They even get new uniforms and shoes to go with it.
The people in town learn that Julie just turned 15 and decide to help organize a quinceañera for her. They bring Cheryl, Julie, and Jamie to the salon while everyone sets up at home. Jim gets Julie a pretty dress, and she loves the party. Thomas gives her a bracelet that his grandmother made. Later, Javi and Lupe offer to take Julie out for her own "parade", with Thomas accompanying them. Not long after, their car is confronted by a group of punks that bother Javi. They attack the group, while they push Julie out of harm's way. The authorities contact Jim, forcing him and Cheryl to drive to the scene and find Julie on the ground, unharmed but with scrapes on her legs and shaking tearfully. Jim is angry over this, despite being assured that Julie was protected.
Jim meets with the Palo Alto district for the coaching position. The boys and his family know about this, and they are upset with him. He tells Cheryl that he could bring them the better life that he promised them. Cheryl argues that they have settled in just fine here and it would be wrong for Jim to abandon the team and the friends they have made.
The day arrives for the state championships. The whole community goes out to support the team. The race commences, which already sees a problem when Jim notices that Jose is moving too fast and worries that he will overexert himself. Thomas runs faster to pick up the slack as Jose starts to slow down. Thomas ends up crossing the finish line first, while the others come in closely. Jim worries when he doesn't see Jose, but to both his and Thomas's surprise, it is Danny that runs faster and picks up the slack.
The judges tally their scores together, and, coming in first place is...MCFARLAND! The townspeople cheer for their team. Jim approaches the Palo Alto coach, which his family and the boys see. He comes back and smiles, simply stating, "McFarland." He hugs his family and then gets a hug from his team.
The ending text says that the McFarland team won nine state titles over 14 years, all of which Jim White coached. We see the real coach and team running by a hill, all of them now grown men. The boys went off to college, and some, including Thomas Valles, the Diaz brothers, and Johnny Sameniego, went on to teach at the McFarland schools. Victor Puentes served a sentence at the penitentiary, but continued his education and got a good job. Jose Cardenas became a writer for The Los Angeles Times and is currently serving his country in the U.S. army. The McFarland team continued to run races in North America, Europe, and Asia. Jim White retired from coaching and still lives in McFarland.