San Pedro Valley, 1859: An Apache war band watches from a cliffside as two surveyors and a young boy begin laying out the plots for the town of Horizon. One of the younger Apache men questions why the men would choose to do this in this spot, and his friend shrugs. Desmarais (Angus Macfadyen), a missionary, rides his horse across the open desert in search of Horizon, having been drawn there by a flyer for the new town. He finds a man at a ruined church who tells him that he already passed through the spot; Desmarais returns and discovers the murdered bodies of the two surveyors and a young boy. He buries the bodies and then decides to stay and continue their work.
Sometime later in Montana Territory, Lucy (Jena Malone) arrives at a remote cabin and shoots the sleeping owner, James Sykes (Charles Halford), in the chest; she releases his horse and then rides off with her baby Sam. James, barely alive, is brought back to his family’s compound. Mrs. Sykes (Dale Dickey), the family matriarch, orders James’ sons Caleb (Jamie Campbell Bower) and Junior (Jon Beavers) to hunt Lucy down.
1863: A small tent city developed at Horizon, and new settlers continued to arrive. The town celebrates in their dance hall. Frances Kittredge (Sienna Miller) attends with her husband James, son Nat, and daughter Elizabeth (Georgia MacPhail) before they all return to their home outside the town on the cliff. Late that night, the family is woken up by an attack from the Apache group, who proceed to burn the town to the ground and kill many residents. The locals fight back, with many dying on both sides; a group of locals reach the Kittredge house and help Frances and her family fight the Apache group until they are eventually overtaken. Frances and her daughter hide in a crawl space beneath the house, using a shotgun forced through the ground to breathe. James and Nat prepare to continue fighting outside the safety of the house. Russell (Etienne Kellici), a young local, flees on horseback.
The following day, the surviving townsfolk come out of hiding to survey the destruction as the Apache band returns to their mountain village. Russell arrives at nearby Camp Gallant and informs the U.S. Army about the attack. Lt. Trent Gephardt (Sam Worthington) and Sgt. Major Thomas Riordan (Michael Rooker) lead a group of men to Horizon to survey the damage and help bury the bodies; Gephardt informs the surviving residents that the location of the town made them easy targets for the Apache.
At the Apache settlement, Pionsenay (Owen Crow Shoe), a younger tribe member, argues with tribe elder Tuayeseh (Gregory Cruz) about the attack on Horizon. Tuayeseh is concerned the attack will only lead to retaliation on their tribe, and he prefers peace, but Pionsenay is adamant that he will not live a life hiding in the mountains, and he believes that they must fight back. Tuayeseh banishes Pionsenay from the village along with a group of other men, including Taklishim (Tatanka Means), who share the same belief. Taklishim argues with his wife about how his actions have led to so many widows and orphans, although she eventually agrees to join him. Tuayeseh is visited by his son, who reveals he has decided to join Pionsenay; Tuayeseh accepts the decision and says they will meet again one day. Tuayeseh then has a conversation in English with a second son about the situation.
Riordan informs Russel that his parents have died. Chavez (Alejandro Edda), a Pima Indian scout working with the army, leads a group of men to try and track the Apache group. Chavez returns to town and discovers the crawl space between the Kittredge house, leading a rescue effort that eventually frees Frances and Elizabeth. Gephardt instructs the town’s survivors to leave Horizon and make a new home at Camp Gallant. Elizabeth and Frances discover that James and Nat have died and bury them before departing with the army for Gallant. Elias Janney (Scott Haze) informs Gephardt that he and a group of men, including Russell, are going to set out after the Apache for revenge and to collect their scalps; Gephardt suggests this is a bad plan but lets them leave as there is no official law in the territory.
Lucy, now going by the name Ellen Harvey, lives in a small mining town with her son and husband, Walter Childs (Michael Angarano); the family shares a home with Marigold (Abby Lee), a prostitute. Horse trader Hayes Ellison (Kevin Costner) arrives in town with a group of men, and Marigold instantly sets her sights on him, flirting with him at the general store and letting him know the town’s secrets. Marigold refuses to take no for an answer and persuades Hayes to meet her at her house that evening. Lucy and Walter prepare to leave town for Walter’s business, reluctantly leaving Sam at home under Marigold’s care.
Frances and Elizabeth adjust to life at Camp Gallant and thank Gephardt for his help in their rescue. Gephardt and Riordan meet with Col. Albert Houghton (Danny Huston); Houghton disagrees with Gephardt’s attempt to dissuade settlement at Horizon, sharing an alternate belief that the white men outnumber the Native population and will one day make it their home no matter what, even if some lives are lost in the process.
Lucy and Walter arrive at a cabin for their land deal but are surprised to discover it is a set-up orchestrated by Caleb and Junior. The brothers inform Lucy they plan to take her and her son back to their father, who is still alive. Walter tries to step in, but Caleb hits him in the back of the head, killing him instantly. Lucy tries to escape, but her attempt is quickly foiled, though Caleb and Junior begin to fight as Junior is angry that they now have to bury Walter’s body. Junior sends Caleb to the mining town, where he meets Hayes on the street; Caleb follows Hayes as he walks and taunts him incessantly while Hayes remains largely silent. Caleb follows Hayes to Marigold’s home, and the two engage in a shootout, with Hayes killing Caleb. Hayes flees town quickly and agrees to take Marigold and Sam with him.
Western Kansas: Matthew Van Weyden (Luke Wilson) leads a wagon train across the Santa Fe Trail. Members of the group include upper-class British couple Juliette Chesenay (Ella Hunt) and Hugh Proctor (Tom Payne), as well as the extended family of James Kittredge, which includes Owen Kittredge (Will Patton) and his daughter Diamond Kittredge (Isabelle Fuhrman). While stopped for a rest and to fix broken wheels, a horse goes wild, but Diamond steps in to free him from his reign and avoid an accident. Matthew scolds Hugh and Juliette for not helping the group enough; Juliette stands up to Matthew while Hugh quickly demurs and agrees to be more helpful. Matthew discovers two Pawnee scouts are tracking the caravan and decides to be cautious and round up the caravan early for the night to protect them in case of an attack. Juliette uses some of the group’s drinking water to bathe herself and is caught naked by two young men. Hugh tries to convince Matthew to discipline the men, but Matthew instead scolds Hugh and Juliette for using the limited water to bathe. Matthew goes to talk with the two men who refute the accusation and refuse to accept orders from Matthew; later at night, they watch Hugh and Juliette in their wagon from afar.
Riordan enlists the help of two young cadets to help move furniture out of his home while his wife, Mrs. Riordan (Elizabeth Dennehy), has tea with other women. Mrs. Riordan catches the men and is upset because the furniture belonged to their later daughter, but Riordan explains that the furniture is for Frances and Elizabeth, and Mrs. Riordan understands the decision.
Elias, Russell, and Tracker (Jeff Fahey) encounter a Native man and his family at a small outpost. Tracker tries to get Russell to shoot the man, but Russell refuses to do so, and they let the man go. Later, Tracker suggests the group buy a few Native men to help them in their continued pursuit of the Apache group, though it suggests it will be difficult to find the actual men who burned down Horizon and instead should kill whoever they find. Russel and Elias commit to continuing the hunt.
Junior returns home with Caleb’s body and tells his father he has already sent men to track down Hayes and Marigold. Hayes notices they are being tracked and watches from a hillside as Junior and his men search a small settlement. Marigold wants to stop running, but Hayes insists that the Sykes family will not let her live and that they should stay in the mining town now that Junior has moved on. Marigold begins sleeping with a traveling gambler, and he tries to convince her to leave Hayes and Sam and go with him. Marigold has sex with Hayes one final time, then abandons Sam in the care of a group of Chinese immigrant workers before leaving town. Hayes wakes up to discover she is gone and accepts the situation.
A contingent of the Army is called away from Camp Gellant to fight in the Civil War; Frances and Elizabeth say goodbye to the men, and Elizabeth offers the men a blessing, raising everyone’s spirits. Frances and Gephardt share a moment by the riverbank and kiss.
Tracker, Elias, Russell, and their group come upon an Apache camp and wait until the men leave on a hunt. Once the men go, they attack the remaining women and children. Russell watches on in horror as Tracker begins to scalp the bodies. The group finishes the work and rides off before the men return.
The film ends with a montage of shots of all the characters in their respective storylines in scenes from Part 2. The scenes include a first glimpse of Pickering (Giovanni Ribisi) as he prints out additional flyers advertising the town of Horizon.