In 19th-century South Africa, outside the Western Cape town of Knysna, a wood-beam maker named Elias van Rooyen lives in the Forest with his wife, Barta. One foggy day, they lose their child Lukas, and despite several days of searching, the community reaches the conclusion that the child must be dead.
Around the same time, a “Coloured” (multiracial) woman named Fiela Komoetie, who lives over the mountain in a hot, dry region called Long Kloof, comes across a white Afrikaner foundling. She names him Benjamin and raises him as one of her own children. She teaches Benjamin her way of life on her property in Wolwekraal, teaching him how to harvest aloe and how to use a thorny branch to guide ostriches. Benjamin’s favorite activity when he’s younger is to play with carved wooden boats in the river. Despite Fiela’s love for Benjamin, she hides him from the rest of the community, fearing what would happen if people knew that a Coloured woman was raising a white son.
Fiela’s fears come true one day when a pair of government census-takers come to Wolwekraal and notice the white Benjamin among Fiela’s other children. They believe Benjamin might be the lost child Lukas. Fiela argues persuasively that this isn’t possible, since no child Benjamin’s age could have survived the treacherous journey from the Forest to West Kloof. The census-takers assure Fiela that the magistrate will justly and correctly determine who is truly Benjamin’s mother, and so, reluctantly, Fiela allows the men to take Benjamin away for a trial.
In fact, however, the magistrate doesn’t give a fair trial. Fiela isn’t allowed to attend herself, and one of the census-takers gives Barta a hint to ensure that she “recognizes” Benjamin as her son Lukas in a lineup. When Benjamin doesn’t return, Fiela goes twice to Knysna herself to try to speak with the magistrate, but she fails to convince the authorities, and they warn her that she herself will go to jail if she keeps pushing the issue. Fiela backs down, in part because she’s been afraid of the legal system ever since her husband Selling went to jail and only narrowly escaped execution or life in prison.
Forced to live with the van Rooyens in the Forest, Benjamin struggles to adapt to his new life as Lukas before grudgingly accepting his new identity. His new father Elias is cruel to him, forcing Benjamin to work hard at making wood beams and scolding him anytime he acts “Coloured” or talks about his life before he was “Lukas.” One of the few bright spots of Benjamin’s new life in the Forest is his “sister” Nina, who is rebellious and who often escapes work by taking refuge in the Forest.
Although Benjamin lives with the van Rooyens for many years and seems to fully accept his identity as Lukas, a part of him can’t let go of his past as Benjamin Komoetie, Fiela’s child. One day, when Elias asks Benjamin to track down the runaway Nina, Benjamin walks around the hills near the sea where boats come in. Seeing the wider world outside the Forest reignites Benjamin’s desire to reject his identity as Lukas and leave the Forest behind. He becomes fascinated by Mr. Benn, a pilot who guides ships through the shallow, rocky waters between the sea and the head of the Knysna River. Although Mr. Benn initially declines to give Benjamin a job as a sailor, Benjamin begins to learn the ropes by doing work for a lower-ranked sailor named Kaliel September.
While Benjamin is staying with the sailors, he sees Nina again and thinks she looks different. He realizes with embarrassment that he has romantic feelings for her, but later, instead of feeling shame, he takes this as proof that Nina must not be his blood relative—and hence he isn’t Lukas after all.
Eventually, Benjamin learns from a messenger that his brother Dawid (Fiela’s biological son) has died. Benjamin doesn’t attend the funeral, but he nevertheless decides that it’s finally time to return to Wolwekraal. There, he joyfully reunites with Fiela and Selling, choosing them as his real parents. Fiela has managed to run a successful farm despite Selling’s ailing health, turning her initial pair of ostriches into a full dozen. Despite the happiness of this family reunion, however, Fiela can tell that a sadness still exists within Benjamin.
Benjamin realizes that he has to go back to confront his former “parents” Elias and Barta. Elias has had a tough few years, getting injured by elephants in his greedy quest to kill one of them and sell its tusks. Benjamin confronts Barta and gets her to admit the truth: she knew all along that Benjamin wasn’t Lukas, but she was afraid to bring it up. She agrees to go to the magistrate and set things straight.
Finally free of his false identity as Lukas, Benjamin goes back to Mr. Benn to learn how to become a sailor. Before starting work, however, he asks Mr. Benn for one more day so that he can visit Nina.