A Thousand Splendid Suns is set in Afghanistan from the early 1960s to the early 2000s. Mariam, a young girl in the 1960s, grows up outside Herat, a small city in Afghanistan. Mariam has complicated feelings about her parents: She lives with her spiteful and stubborn mother, Nana; while her father Jalil, a successful businessman, visits Mariam — his only illegitimate child — once a week. Mariam resents her limited place in Jalil's life; she wants to live with him, his three wives, and her half-siblings in Herat. She makes her wishes known by asking Jalil to take her to see Pinocchio for her fifteenth birthday. Jalil reluctantly agrees, but then never shows up to take her to the film. Mariam walks to heart and finds Jalil's house, but he doesn't let her in, so she sleeps on the street. The next morning, Jalil's chauffeur drives Mariam home where she finds that her mother has committed suicide.
Mariam is taken to Jalil's home after her mother's funeral. Jalil's wives want nothing to do with Mariam, so they force him to let her marry Rasheed, a widowed shoemaker in Kabul. At first Rasheed treats Mariam decently, but after she suffers miscarriage after miscarriage, he abuses her both physically and verbally. It becomes clear that Rasheed's only use for Mariam is in her ability to replace the son he lost years ago.
Growing up down the street from Rasheed and Mariam is Laila, a young, intelligent girl from a loving family. However, the Afghani war against the Soviets disrupts Laila's childhood and both her older brothers leave to join the war. Laila seeks comfort from her best friend, Tariq, a boy a few years older than her. Just before Laila reaches adolescence, her parents' receive news that both of their sons have been killed. A few years later, war reaches Kabul and bombs fall on the city regularly. By now, Tariq and Laila are teenagers and in love. As Tariq tells Laila that he and his family are fleeing to Pakistan, the couples makes love for the first time, quickly and passionately. A few days later, Laila's parents decide to leave Afghanistan as well, but as they are packing a rocket hits their house, killing Laila's parents and wounding her.
Rasheed and Mariam nurse Laila back to health and after she recovers, a stranger, Abdul Sharif brings her news that Tariq has died. Devastated and realizing she's pregnant with Tariq's child, Laila agrees to marry Rasheed. Mariam is initially hurt and threatened by Laila's presence and refuses to have anything to do with her. However, after Laila gives birth to a daughter, Aziza, the women come to see themselves as allies against Rasheed's abusive, manipulative ways. A few years later, Laila gives birth to a son, Zalmai. Then, one afternoon, after years of abuse and sadness, Laila is shocked to see a man standing at her front door: Tariq.
Tariq and Laila spend the afternoon together while Rasheed is at work. Laila and Mariam realize that Rasheed hired Abdul Sharif to tell Laila about Tariq's untrue demise so she wouldn't run away. When Rasheed finds out that Tariq has come home, he brutally beats Laila. With a shovel, Mariam kills Rasheed. The next day, Mariam turns herself over to the Taliban in an effort to clear the way for Laila to find sanctuary for herself and her children in Pakistan with Tariq.
In Pakistan, Tariq and Laila marry and finally begin the life they dreamed of so many years ago. With time, both of Laila's children warm to Tariq and they enjoy their new life. But in September, 2001, their happiness is overshadowed by news that the United States has attacked Afghanistan. Following the US invasion, conditions in Kabul improve, and Laila insists that her family move back home so they can help rebuild their city. They stop by Herat on their way to Kabul, where Laila visits Mariam's old home and is able to come to terms with her grief over Mariam's execution. Laila and Tariq build a new life in Kabul: Laila becomes a schoolteacher at the orphanage where Aziza once lived. And when Laila becomes pregnant, she decides that if she has a girl, she'll name her Mariam.