The story opens on a particularly foggy day in the Knysna forest where Elias van Rooyen, a beam maker, is trying to work. Commotion ensues when it appears that one of his four children, the three-year-old Lukas, has disappeared. Elias stubbornly tries to assure his wife Barta that the boy is fine, but gradually realizes that something must be done. Barta and the other neighbors set out to find the boy, but they can't. For the next few days, everyone in the forest helps to search for Lukas, to no avail. Barta and Elias must accept that their son has been lost; a year later, someone finds bones that possibly could be those of Lukas.
The narration switches to introduce us to the Komoeties, a black family that lives in the Long Kloof, an area of open plains on the other side of the mountains from the Knysna Forest. The family is headed by Fiela, a fierce and hardworking woman, and Selling, her husband, whose health is in decline. They have four biological children—Kittie, Emma, Tollie, and Dawid—and one "hand-child," or adopted child, named Benjamin. Benjamin is white and was found as toddler on their doorstep; Fiela immediately took him in and raised him as her own.
One day, two white men in suits show up at the Komoetie home, explaining that they are there to take the census. Fiela panics, knowing that if someone from the government finds out about Benjamin, they will take him away. Sure enough, when the census takers spot Benjamin, they are shocked and question how a white child could be part of a black family. They come up with the idea that Benjamin could be the lost Lukas van Rooyen who disappeared in Knysna nine years earlier. Fiela asserts that this is impossible because the trek between the forest and the Kloof is too treacherous for a small boy to complete. The men, looking down on her and Selling because of their race, try to brush off her argument. They tell her they will inquire with the Knysna magistrate and promise to return soon to take Benjamin.
Fiela spends the next weeks in deep anxiety over Benjamin being taken; she prays to God for help. When months go by without the men returning, Fiela is able to relax somewhat. She and the Komoeties work on tapping aloe and breeding their two ostriches, Kicker and Pollie. Ostrich feathers are very valuable and Fiela hopes to use the yield to eventually purchase the land of the neighboring Laghaan family.
Back at the van Rooyens', Elias van Rooyen is trying to create a plan to trap the forest elephants. His idea is that he can loosen a tree where the elephants wrap their trunks to pass around a steep cliff so that they fall below and die. Then he can take the ivory and sell it, thereby freeing himself of his menial labor as a beam maker. Elias is shown to be quite irritable and paranoid about how others perceive him, believing that he is looked down on by the woodcutters because he is a beam maker. He sets out for the forest to execute his plan; however, he is not only outsmarted by the elephants but also almost trampled by them. Furious, he returns home, where he discovers a forester who has come there to inform him and Barta that Lukas has been found.
The census men finally return abruptly to the Long Kloof to inform the Komoeties that they will be taking Benjamin. Although she is extremely upset, Fiela realizes that there is nothing she can do besides letting them take her son. She makes the men promise to bring him home after a few days, as she feels assured that they will realize that Benjamin isn't actually Lukas. She packs a bag for Benjamin and dresses him in his nicest clothes so he can make a good impression on the Komoeties. The census men take the boy in a horse cart through the mountains to the village of Knysna. Benjamin is nervous and doesn't completely understand what's going on, as it is only through this situation has he become consciously aware that he is of a different race than the Komoeties. He speaks in the vernacular of a "coloured," which both amuses and disturbs the government men and the magistrate; they tell him he must learn to talk like a white child.
Once in the village, Benjamin is taken to meet with the magistrate, Mr. Goldbury. All that Benjamin can say is that he is Fiela Komoetie's child, but the magistrate doesn't want to hear this; he hastily decides that Benjamin is Lukas. Meanwhile, Elias and Barta are making their way through the forest to the courthouse, where they have been called to meet the boy who might be their long-lost Lukas. Barta is very nervous, shocked that Lukas could possibly have been found; Elias, annoyed, tries to calm her down. When they get there and see a lineup of boys, Barta is able to pick out Lukas. Thus it is decided Benjamin will go home with the van Rooyens. He is taken back to their house, where everyone calls him Lukas. He doesn't quite understand what is going on and doesn't want to call Elias and Barta "ma and pa."
The Komoeties wait for days for Benjamin to be brought home, but he never arrives. They realize that the census men lied to them. Fiela is worried and decides she will take it upon herself to go see what has happened. She sets out on the journey of walking from the Long Kloof to the forest. It is a journey she has done in the past, back when Selling was doing prison labor in the mountains. We learn that when their children were still young, Selling impulsively killed one of the Laghaans and was put in jail for several years. He was pardoned earlier than expected, but his health deteriorated greatly from the hard labor. It was during Selling's imprisonment that Benjamin showed up at the doorstep.
The days go by at the van Rooyens', and Benjamin can only think about when Fiela will come and rescue him. Elias is becoming more and more frustrated that Lukas refuses to speak or call him pa. He gets the idea to make the boy help him with making wood beams. Lukas gets to know his younger sister Nina, who is the most relatable member of the family. Nina loves to spend time in the forest, much to her parents' chagrin. Lukas tries to get Nina to show him the way to the gravel road that leads out of the dense forest; she agrees to do this if he gives her the five-shilling that Fiela left him with. However, when Lukas disappears, Elias beats Nina until she tells him where he went; thus, Elias is able to catch up with the boy.
Fiela finally reaches Knsyna. When she tries to speak to the magistrate, she can only find a constable, who tells her that the case of Benjamin is over and he is already living with the van Rooyens. Fiela is shocked and defeated; she returns to the Long Kloof to tell everyone the bad news. The Komoeties are in a state of grief for days afterward, but Fiela, as the matriarch, encourages everyone to persevere and keep up with the daily work. Fiela decides that she will go to Knysna again and try to talk to the magistrate. This time, she is angrier and less willing to play the submissive role of a "proper black woman." When she gets there, she confronts the magistrate directly, who tells her to go away or else she will be in trouble. She returns home again and this time enlists the help of her white neighbor, Petrus Zondagh, who goes to Knysna to see if he can speak with the magistrate. This attempt doesn't work either and Petrus advises the Komoeties to accept the situation.
Elias has moved on to a different plan to trap the elephants; he will build a deep snare-pit in the ground for them to fall into. Elias is informed that a forester, sent by the magistrate, will visit the van Rooyens to check on how Lukas is adjusting. Elias purposely sends Lukas and Nina to play in the forest that day so that the forester won't see the boy's sullenness.
Time passes and Benjamin gives up hope that he will be rescued. He starts to adjust to life in the van Rooyen family, helping Elias with his work and playing with Nina in the forest. Whenever he is too quiet or rebels in any way, he faces beatings from his father, so he quickly learns to submit. Nina becomes more and more rebellious, frequently escaping to the forest instead of doing her chores. They are forced to help their father build the pit, not knowing what it's for. Later, when Nina finds out that Elias has trapped an elephant calf in it, she is shocked and angry, as she is a lover of elephants.
As a result of killing a baby elephant, Elias becomes a target of vengeance for the mother elephants; he can no longer go into the forest without fear for his life. As time goes on, he becomes more and more paranoid about the elephants and stops leaving the house. He only makes wood beams and tries to order his family around, especially Nina, who is increasingly distant. Nina is now old enough to work as a servant, so Elias forces her to take a job in the village caring for British people's children. She has several of these jobs but is fired each time for bad behavior; each time she comes home after being fired, Elias beats her. It has been seven years since Benjamin/Lukas was taken from the Long Kloof; he no longer identifies as a Komoetie, seeing this as an experience of his past.
At the Komoeties', the family is grieving the death of Dawid, who died suddenly after being bitten by a spider. Fiela feels that God has abandoned her now that she has lost two of her sons and her other son, Tollie, has become a drunk. The Komoeties have successfully been breeding ostriches and amassed enough money to buy more land, yet none of this makes Fiela or Selling truly happy.
One day, Elias sends Lukas to find Nina in the village, after she has been fired yet again and has refused to return home. Lukas sets out on the gravel road. For a while now, he has had the knowledge and ability to leave the forest if he wanted to, but he has chosen not to. Yet this time, something in him makes him take a detour to the seaside after he hears that there is a ghost ship there. At the sea, Lukas is moved by this landscape and starts to finally consider who he truly is. He goes to Knsyna, where he finds Nina working for a kind English woman named Miss Weatherbury. At the cove, Lukas encounters some oarsmen and decides to work for them. He asks Nina for one favor: to return to the forest and tell their parents that he won't be coming back.
Elias is incredibly angry to receive the news that Lukas won't return and tries to devise a plan to get him back, which entails him going through the forest. He asks an indigenous person of the forest how best to defend himself from the elephants. Though he follows this guidance, it doesn't work: Elias ends up getting brutally attacked and injured by the animals.
Lukas works for a sailor named Kaliel September, where he learns about rowing and fishing. Nina is nearby, so they spend time together; noticing her beauty, Lukas begins to have feelings for his sister. This disturbs him greatly and makes him feel guilty; as a result, he begins to wonder if he could truly be Lukas van Rooyen. One day, Lukas receives news that his former brother, Dawid, has died. This news brings back memories of the past and Lukas decides to go visit the Long Kloof.
When Benjamin arrives at the Long Kloof, Fiela and the others are overjoyed and feel that God has finally answered their prayers. He stays with them for a few months, during which time they catch up and reconnect. One day, though, Benjamin tells Fiela that he must go back to the forest and resolve the truth of his identity with Barta van Rooyen before he can stay in the Long Kloof for good. Back in the forest, Lukas discovers how badly injured Elias was. Elias is furious that Lukas has run away, but in his wounded state, he can't beat him for it. Lukas confronts Barta and asks if he is truly her son; she becomes frightened and tells him that he is. Lukas feels that he must accept this information and returns to the seaside, where he is happy to see Nina again, even if he must relate to her as a sibling.
Lukas goes back to working with Kaliel and John Benn, the captain of the pilot ship. One day, he helps the oarsmen try to rescue a ship and witnesses some sailors die. He returns from the job to see Nina and feels such a strong attraction to her that he again questions his real identity. He decides once more to confront Barta. This time, when he does, Barta finally admits that she knew all along he was not Lukas and that she was encouraged by one of the census men to pick him that day in the courthouse. Hearing this, Benjamin feels relief and walks away from the van Rooyens for the last time.
Benjamin spends some days living in a cave, contemplating his life and the absurdity of a lone census-taker determining his fate. He goes to the seaside, where he tells the other oarsmen to call him "Benjamin Komoetie" and that he will work there for a while before returning to "his people" at the Long Kloof. He then goes to see Nina at Miss Weatherbury's house.