Jay Cavendish (Kodi Smit-McPhee) is a young man from Scotland traveling through the United States in search of his love, Rose Ross (Caren Pistorius). On his journey, he comes by the woods near a Native American camp where a group of union officers are chasing after a Native American. Two run off and chase the man, and gunshots are heard. A bandit named Silas Selleck (Michael Fassbender) shows up with a gun aimed at the one officer. Jay holds his gun up to Silas, but Silas still shoots the officer. He and Jay then join forces and travel together.
Through some flashbacks, we see Jay and Rose spending time together back in Scotland, rolling down a hill near a beach. He was very much in love with her, while she only saw him as a brother, something that troubled him.
Jay and Silas ride through a field where three Congolese men are playing a song about love. Jay tells one of the men that he likes the song, and he notes that "love is universal like death". Following closeby are a group of bounty hunters, led by Payne (Ben Mendelsohn). The two ride by a shop where Silas sees a wanted poster for both Rose and her father John (Rory McCann), offering a $2,000 reward if they're caught dead. Everybody but Jay knows about it. The two enter the shop to gather some items. After them enters a Swedish couple, Johan and Maria (Karl Willetts and Brooke Williams). Johan raises his gun to the shopkeeper, demanding money even though the shopkeeper insists that this shop would be the only place he could spend money. The shopkeeper shoots Johan in the chest, and Maria shoots the shopkeeper dead. She aims at Silas, also demanding money. Jay shoots her in the back. He and Silas leave with their items until they see two children, Eva and Jan (Evie and George Simon). Figuring he just killed their mother, Jay leave the children with his items.
In another flashback, right after Rose tells Jay that he is like her brother, she tells him to hide under the bed. He stays there for hours as John has company over. Jay's uncle Rupert (Alex MacQueen) shows up and tries taking Jay back, dismissing everyone in the house as peasants. Jay says he is with Rose now. Rupert slaps Rose, prompting John to retaliate by shoving Rupert backwards and causing him to smash his head against a rock, killing him. This leads to John and Rose becoming outlaws.
Shortly after the incident, Jay makes it to the U.S. and encounters a clergyman named Angus (Tony Croft). He says he is documenting the downfall of the Aboriginal tribe and hoping to spread Christianity. Jay asks Angus for advice. The next morning, Jay wakes up alone to nothing but an egg resting on a note that says "West". He then breaks the egg open and lets the yolk fall out.
Jay and Silas bond as the latter guides the boy to his destination. Silas shaves Jay's face with his knife while Jay tells Silas that he is a lonely man. Payne walks out from behind a tree with a bottle and some glasses. He joins the two at their camp site, and he asks Jay knowingly if he is traveling to find his sweetheart. At night, Silas and Payne discuss the bounty on John and Rose, with Payne trying to get a word out of Silas after getting him drunk. Silas was part of Payne's gang, but he left after deciding that he is not like Payne. Silas knows nothing and wouldn't tell Payne anything if he did.
When Jay wakes up, he sees Silas and Payne are both gone. He comes across Payne's group, who have Eva and Jan with them. Jay sits with them around the fire as one of the bounty hunters tells a story about a man he killed.
Jay finds Silas in the woods. Silas tries to get him to stop his pursuit of Rose, but Jay insists that she is his. They fall asleep and wake up to the pouring rain, almost submerging them and their items. They dry off in the morning and see more bounty hunters. This forces Silas to come clean to Jay about the bounty on Rose and her father.
We see John and Rose living in a cabin, miles from anywhere else. They have a Native American helper, Kotori (Kalani Queypo). A man visits them, knowing who Rose is, leading her to get worried, but John insists that nobody there knows who they are.
Silas ties Jay to a tree to prevent him from going to save Rose. He rides toward their house, just as Payne and his gang do. They initiate a shootout, with John being the first one killed. Rose stands her ground to defend herself against the hail of bullets. Silas shows up, not wanting to kill Rose. He gets hit in the shoulder and leg, but he remains alive. Jay breaks himself free from the tree and runs to the house. Without warning, he enters and startles Rose, causing her to shoot him in the chest. She continues to defend herself, while Kotori rushes to her side to help her. At one point, a bullet hits a jar of salt and causes it to spill on Jay's bullet wound. The bounty hunters, and even Kotori, are killed, until Payne is the only one left. Rose walks over to Jay's side, unaware until now that she just killed him. She gives him her gun to shoot Payne as he enters the house. Silas then comes in as Jay dies. He tells Rose that Jay loved her. She says his heart was in the wrong place. Silas says his spirit wasn't.
Later on, Rose appears to adopt Eva and Jan. Silas continues living, never forgetting Jay or what he stood for.