Kannathil Muthamittal film begins at a small village in Sri Lanka, where a Sri Lankan Tamil woman Shyama (Nandita Das) gets married to Dileepan (J.D. Chakravarthy), who along with few other Sri Lankan Tamils in the village (including Shyama's elder brother) is part of the Tamil Tigers rebel association, which fights for the rights of Sri Lankan Tamils. While romancing each other at a mud river after marriage, the couple hear sounds of Sri Lankan army troops approaching, thus Dileepan flees, leaving behind Shyama. What happened to Dileepan after that remains a mystery, as Shyama realizes that she is pregnant and waits in vain for Dileepan to return.
Her villagers begin fleeing to India to seek refuge as the war between LTTE and the Sri Lankan army goes full scale, affecting their village in the process. Shyama is initially stubborn to leave, but she is convinced by her relatives that she has to seek refuge for the sake of her to-be-born child. The villagers board a boat to the shores of Rameswaram, which is a famous refugee hub from Sri Lankan Tamils. While a local collector takes down the names of the refugees, Shyama's water breaks and she gives birth to a baby girl. But as soon as the baby is born, her urge to find her husband and be with her people back home overwhelms her and she leaves behind the new-born girl in hopes that the girl will lead a better life.
The film later shifts focus to nine years later in Chennai where a young exuberant girl Amudha P.S. Keerthana narrates about her family life. She introduces her short-tempered but talented father, writer Thiruchelvan (R. Madhavan), who uses the pen name 'Indira' for his books. Indira (Simran Bagga) is Amudha's mother, while she has a younger brother named Vinay, with whom she always has childish frictions, and another younger brother. Amudha's ninth birthday approaches and both her parents take her to the temple early in the morning. Indira later reminds Thiruchelvan that they have promised themselves to reveal 'the truth' to Amudha on her ninth birthday.
After praying in the temple, Thiruchelvan brings Amudha to the beach, and she runs around in the beach, he reveals the truth that she was adopted and is not their biological daughter. She was adopted from a refugee camp in Rameswaram after her parents abandoned her. Amudha is heavily disturbed after hearing the news and begins comparing and distancing herself from the family, seeing herself as an outsider. Indira's father criticizes them for revealing the truth to her at such a young age, but Thiruchelvan and Indira are certain they have taken the right decision. Amudha asks her parents to tell her the story of how she come to be adopted.
The film then flashes to nine years previously in Rameswaram, where Thiruchelvan, then a budding writer, constantly travels to the refugee camp and writes stories inspired by the people there. At one such instance, Thiruchelvan sees a new-born baby girl, and writes a short story about why her mother found the urge to abandon her child and return to a war-ridden land. Indira is his neighbour, and has always expressed interest in him. Thiruchelvan, after a while, finds the urge to adopt the small baby girl and raise her, but realizes that he will not be allowed to do so until he is married. He then proposes to Indira (in whom he is also interested) in order to be able to adopt the baby. Indira suggests the name 'Amudha' after seeing the baby once, and then adopt the baby after they marry each other. Vinay was born few years after their marriage, followed by the younger brother, and thus, the family happened.
Even after hearing this, Amudha is rebellious and dissatisfied. She requests to meet her biological mother at all costs despite Indira's insistence that they cant possibly find the mother even if they wanted to. Thiruchelvan finally gives in and promises to take Amudha to Sri Lanka to find her biological mother. The three of them (excluding the two boys who are left under the care of their grandfather) travel to Sri Lanka and are greeted by Dr. Herold Vikramsinghe (Prakash Raj), their guide during the trip. At Lanka, Amudha and Indira's relationship strains as Amudha becomes increasingly rude at her mother while urging to find her real mother, while the family witnesses civil violence first hand as they travel to a village that is being bombed by the army to find Shyama only to realize that they have discovered the wrong Shyama.
While talking a walk in the jungles and ideologically talking about violence, civil war and western manipulation, Thiruchelvan and Vikramsinghe are captured by a group of LTTE rebels. Thiruchelvan immediately recites Tamil poetry and is identified as a Tamil writer by the group's leader (Pasupathy). Thiruchelvan explains his motives of coming to the country, and even mentions the only evidence that he has regarding Amudha's mother- that her name is Shyama. The group leader arranges a meet and says he will bring Shyama there, and it is later revealed that Shyama is the group leader's sister, with she also being part of the LTTE rebels living in seclusion.
The next day, on the meet, Vikramsinghe, Amudha, Indira, and Thiruchelvan wait at the told spot, but a sudden series of bombings break out at the place as the Sri Lankan army tries to infiltrate the hiding of the rebels in a building nearby. Vikramsinghe urges that they leave the place but Amudha stays stubborn, causing Indira to get shot in her arm. The family finally leaves the place, and Amudha, shaken by what she saw and what happened to her mother, apologizes and asks that all of them leave the country and return home. The next day, the family leave for the airport but out of the blue, Indira requests that they drive through the meeting spot one more time. As they wait in the car parked at the spot, an auto comes by and Shyama gets down from the vehicle. The meeting finally takes place and Amudha asks Shyama a series of questions as to why Shyama abandoned her. Shyama is unable to answer to all of those answers, but also insists that her life will remain fighting for her people in her country and that Amudha should live happily with her adopted parents. Shyama leaves after that.
The film ends with Thiruchelvan, Amudha, and Indira hugging each other as Shyama leaves, and a teary-eyed Amudha kisses her parents, re-affirming her love for them.