The two main characters of the story are Amir, a well-to-do Afghan boy from the dominant Pushtun ethnic group, and Hassan, the son of Amir's father's servant Ali, who belongs to the historically downtrodden Hazara minority. The boys spend their days in a peaceful Kabul, kite fighting, roaming the streets and being boys. Amir's father, Baba, loves both the boys, but seems often to favor Hassan for being more manly. He is critical of Amir. Amir's mother died in childbirth, and Amir fears his father blames him for his mother's death. However, he has a kind father figure in the form of Rahim Khan, Baba's friend, who understands Amir better, and is supportive of his interest in writing stories.
A notoriously violent older boy with Nazi sympathies, Assef, blames Amir for socializing with a Hazara, who he claims is an inferior race that should only live in Hazarajat. He prepares to attack Amir, but Hassan bravely stands up to him, threatening to shoot Assef in the eye with his slingshot. Assef and his henchmen back off, but Assef says he will take revenge.
Hassan is a "kite runner" for Amir: he runs to fetch kites Amir has defeated by cutting their strings. He knows where such a kite will land without even seeing it. One triumphant day, Amir wins the local tournament, and finally Baba's praise. Hassan goes to run the last cut kite (a great trophy) for Amir, saying "For you, a thousand times over." Unfortunately, Hassan runs into Assef and his two henchmen. Hassan refuses to give up Amir's kite, so Assef exacts his revenge, assaulting and anally raping him. Wondering why Hassan is taking so long, Amir searches for Hassan and hides when he hears Assef's voice. He witnesses what happens to Hassan but is too scared to help him. Afterwards, for some time Hassan and Amir keep a distance from each other. When Hassan wants to pick up their friendship again, Amir holds it off. When people ask what is the matter, Amir reacts indifferently. He feels ashamed, and is frustrated by Hassan's saint-like behavior. Amir worries that Baba loves Hassan more, and would love him even more if he knew what happened to Hassan and about Amir's cowardly inaction.
To force Hassan to leave, Amir frames him as a thief, and Hassan falsely confesses. Baba forgives him, despite the fact that, as he explained earlier, he believes that "there is no act more wretched than stealing". Hassan and his father Ali, to Baba's extreme sorrow, leave anyway. Hassan's departure frees Amir of the daily reminder of his cowardice and betrayal, but he still lives in their shadow.
A short while later, the Soviets invade Afghanistan. Amir and Baba escape to Peshawar, Pakistan and then to Fremont, California, where Amir and Baba (who lived in luxury in an expensive mansion in Afghanistan) settle in a run-down apartment and Baba begins work at a gas station. Amir eventually takes classes at a local community college to develop his writing skills. Every Sunday, Baba and Amir make extra money selling used goods at a flea market in San Jose. There, Amir meets Soraya Taheri and her family; Soraya's father is contemptuous of Amir's literary aspiration. Baba has lung cancer but is still able to do Amir a great favor: he asks Soraya's father to grant permission for Amir to marry her. He agrees and the two marry. Shortly thereafter Baba dies. Amir and Soraya learn that they cannot have children.
Amir embarks on a successful career as a novelist. Fifteen years after they said goodbye, Amir receives a call from Rahim Khan, now dying from an illness, who asks him to come to Pakistan. He enigmatically tells Amir "there is a way to be good again". Amir goes.
From Rahim Khan, Amir learns the fates of Ali and Hassan. Ali was killed by a land mine. Hassan had a wife and a son, named Sohrab, and had returned to Baba's house as a caretaker at Rahim Khan's request. One day the Taliban ordered him to give it up and leave, but he refused, and was murdered, along with his wife. And the secret truth about Hassan is that Ali was not his father. Hassan is the son of Baba, and thus Amir's half-brother. Finally, Rahim Khan reveals that the true reason he has called Amir to Pakistan is to go to Kabul to rescue Hassan's son, Sohrab, from an orphanage.
Amir returns to Taliban-controlled Kabul with a guide, Farid, and searches for Sohrab at the orphanage. However, he does not find Sohrab there. The director of the orphanage tells them that a Taliban official has recently taken the boy. He tells Amir to go to a football match and look for aTaliban official making speeches; this will be the man who took Sohrab.
Amir goes and secures an appointment with him at his home. There he finds out that the Taliban official is actually his childhood nemesis Assef. Sohrab is made to dance dressed in women's clothes, and it seems Assef might have been sexually assaulting him (Sohrab later says: "I'm so dirty and full of sin. The bad man and the other two did things to me"). Assef agrees to relinquish him, but only if Amir can beat him in a fight to death, with Sohrab as the prize. Assef brutally beats Amir, but Amir is saved when Sohrab uses his slingshot to shoot out Assef's left eye, fulfilling the threat his father had made years before.
Amir tells Sohrab of his plans to take him back to America and possibly adopt him, and promises that he will never be sent to an orphanage again. Sohrab is emotionally damaged and refuses to speak. This continues on for about a year until his frozen emotions are temporarily thawed when Amir reminisces about his father, Hassan, while kite flying. Amir shows off some of Hassan's tricks, and Sohrab begins to interact with Amir again. In the end Sohrab only shows a lopsided smile, but Amir takes to it with all his heart as he runs the kite for Sohrab, saying, "For you, a thousand times over." This is an echo of the last words spoken to Amir by Hassan before the rape, and signifies the sense of atonement that permeates the novel.