In 1928 Los Angeles, single mother Christine Collins (Jolie) returns home to discover her nine-year-old son, Walter (Griffith), is missing. Reverend Gustav Briegleb (Malkovich) publicizes Christines plight and rails against the Los Angeles Police Department (LAPD) for its incompetence, corruption and the extrajudicial punishment meted out by its "Gun Squad", led by Chief James E. Davis (Colm Feore).
Several months after Walters disappearance, the LAPD tells Christine that he has been found alive. Believing the positive publicity will negate recent criticism of the department, the LAPD organizes a public reunion. Although "Walter" (Devon Conti) claims he is Christines son, she says he is not. Captain J. J. Jones (Donovan), the head of the LAPDs Juvenile Division, insists the boy is Walter and pressures Christine into taking him home "on a trial basis".
After Christine confronts Jones with physical discrepancies between "Walter" and her son, Jones arranges for a medical doctor to visit her. He tells Christine that "Walter" is shorter than before his disappearance because trauma has shrunk his spine, and that the man who took Walter had him circumcised. A newspaper prints a story that implies Christine is an unfit mother; Briegleb tells Christine it was planted by police to discredit her. Walters teacher and dentist give Christine signed letters confirming "Walter" is an impostor.
Christine tells her story to the press; as a result, Jones sends her to Los Angeles County Hospitals "psychopathic ward". She befriends inmate Carol Dexter (Ryan), who tells Christine she is one of several women who were sent there for challenging police authority. Dr. Steele (Denis OHare) deems Christine delusional and forces her to take mood-regulating pills. Steele says he will release Christine if she admits she was mistaken about "Walter"; she refuses.
Detective Ybarra (Kelly) travels to a ranch in Wineville, Riverside County, to arrange the deportation of 15-year-old Sanford Clark to Canada. The boys uncle, Gordon Northcott (Harner), has fled after Ybarra unwittingly alerted him to his visit. Clark tells Ybarra that Northcott forced him to help kidnap and murder around 20 boys and identifies Walter as one of them. Jones tells Briegleb that Christine is in protective custody following a mental breakdown. Jones orders Clarks deportation, but Ybarra makes Clark reveal the murder site. Briegleb secures Christines release by showing Steele a newspaper story about the Wineville killings that names Walter as a possible victim. "Walter" reveals his motive was to secure transport to Los Angeles to see his favorite actor, Tom Mix, and says the police told him to lie about being Christines son. The RCMP capture Northcott in Vancouver, Canada. Christines attorney (Pierson) secures a court order for the release of the other unfairly imprisoned women.
On the day of the city councils hearing into the case, Christine and Briegleb arrive at Los Angeles City Hall, where they encounter thousands of protesters demanding answers from the city. The hearing is intercut with scenes from Northcotts trial. The council concludes that Jones and Davis should be removed from duty, and that extrajudicial internments by police must be reviewed. Northcotts jury finds him guilty of murder and the judge sentences him to death by hanging. Two years later, Christine has not given up her search for Walter. Northcott sends her a message saying he is willing to admit to killing Walter on condition that Christine meet him before his execution. She visits Northcott, but he refuses to tell her if he killed her son. Northcott is executed the next day. In 1935, David Clay—one of the boys assumed to have been killed—is found alive. He reveals that one of the boys with whom he was imprisoned was Walter. David, Walter and another boy escaped, but were separated. David does not know whether Walter was recaptured, giving Christine hope he is alive