Jake Roedel (Tobey Maguire) and Jack Bull Chiles (Skeet Ulrich) are best friends living in Missouri when the Civil War breaks out.
Women and Blacks know their place. Jack Bull's dad is killed by Union soldiers, so the young men join the Bushwhackers, a unit formed to raid the North Union soldiers.
One of the members is Black and called Daniel Holt (Jeffrey Wright), who is totally beholden to the man who bought his freedom. They skirmish then spend long hours hiding.
With the fierce winter looming their unit must separate and find shelter, their quest helped by a young widow called Sue Lee Shelley (Jewel Kilcher), who brings them food and water. Soon Sue and Jack Bull become lovers, and when he's grievously wounded, Jake escorts her south to a safe farm.
The Bushwhackers, led by men set on revenge, make a raid into Kansas. At 19, Jake is ill at ease with war. As his friends die one after another, he must decide where his honour lies.