Beth Cappadora (Michelle Pfeiffer) and her husband Pat (Treat Williams) experience a parent's worst fear when their 3-year-old son Ben vanishes in a crowded hotel lobby during Beth's high school reunion. The ensuing frantic search is unsuccessful, and Beth goes through a sustained nervous breakdown. Unable to cope with her devastation, Beth unintentionally neglects her other children, Vincent (Jonathan Jackson) and Kerry (Alexa Vega).
After nine years, the family has seemingly accepted that Ben has gone forever, when a familiar-looking boy (Ryan Merriman) turns up at their house, introducing himself as Sam and offers to mow their lawn. Beth is convinced that Sam is actually her son, and begins an investigation that culminates in the discovery that Ben was kidnapped at the ill-fated high school reunion years ago, by a mentally unstable woman who was a high school classmate of Beth's. This woman brought up Ben as her own child, until she committed suicide. The attempted re-integration of Ben back into the Cappadora family produces painful results for all involved.
Eventually, the family decides that what's best for Ben is to return him to his adoptive father, but one night, Vincent finds him playing basketball outside. Ben reveals that he remembered something from before his abduction, playing with Vincent and Vincent finding him, causing him to feel safe. Vincent, who has carried guilt for letting go of Ben at the reunion, is forgiven by Ben who decides to return to living with his real family, but first plays a game of basketball with his brother with their parents secretly watching from their bedroom window.