A freak accident brings together a critically ill mathematician, a grieving mother, and a born-again ex-con
Paul (Sean Penn), who is dying of heart disease, receives the transplanted heart of Michael (Danny Huston), who was accidentally struck and killed (along with his daughters) by a truck driven by Jack (Benicio Del Toro), a recovering addict and ex-con who has given his life to Jesus. Overcome with guilt, Jack leaves his wife and abandons his faith. Paul, obsessed with the origin of his transplanted heart, falls in love with Michael’s widow, Cristina (Naomi Watts), who begs him to kill Jack, so she can move on with her life. Paul cannot kill Jack, but lets him go, perhaps because he feels a kind of gratitude to him for providing him the heart. Driven by guilt, Jack comes to Paul’s hotel room, demanding to be killed by Paul, but instead, Paul shoots himself and later dies in hospital. Jack claims responsibility for Paul’s death, but once again, the police let him go. He returns to his wife and children.
Mathematics Professor Paul Rivers (Sean Penn) has a heart problem and will die very soon if he is not given a heart by a donor. His wife Mary (Charlotte Gainsbourg) wants desperately to have a child, and since she has secretly had an abortion in the past, she is barren in her current state.
Cristina Peck (Naomi Watts) is an ex-druggie turned housewife and mother. She is happy with her two daughters Laura and Katie and her husband Michael. She swims often with her sister Claudia (Clea DuVall).
Jack Jordan (Benicio Del Toro) is an ex-convict turned Christian and is convinced that God is behind everything that happens in the world. His wife Marianne (Melissa Leo) is unhappy and fed up with her husband. His strange parenting also makes their two children uncomfortable.
Paul is angry with his wife who doesn’t trust him to take care of himself in his unhealthy condition. He smokes secretly and she still worries that he might be seeing other women (it is apparent later on that he had some kind of history with cheating on his wife).
One evening, Cristina arrives home with a phone call from the police, saying that her husband and daughters have been in an accident. She panics. At the same time, the Jordans are having a party for Jack, who comes home with the car covered in blood. He tells Marianne that he has run over two girls and a man. He is a complete wreck and wants to turn himself in, but Marianne refuses to let him, doing all she can to cover up the evidence.
Cristina goes to the hospital where the doctors inform her that her oldest daughter is dead, but that the younger one would’ve lived if she had gotten to the hospital in time. The husband is in critical condition, and Cristina, her sister, and father break down in the hospital.
At the Rivers’ home, Paul tries to get Mary in bed with him but she says she is not in the mood. He informs her that he has fired his nurse, and Mary becomes extremely upset, saying that he can’t take care of himself. Paul insists that he will be independent.
Paul and Mary go to the hospital later, where they agree to perform artificial insemination in an effort to have a child. The doctor tells Paul that he probably won’t be able to meet the child seeing as he will be dying soon.
Later, at the hospital, doctors tell Cristina that a certain patient is tremendously ill and is in serious need of a heart. She agrees to donate her husband’s heart to the patient, who is obviously Paul. Paul and Mary get a phone in the night, and Paul goes into the hospital for the surgery.
In jail, Marianne tells Jack that they sold the truck to pay for a lawyer, upsetting him because he didn’t want a lawyer. He tries to hang himself but is unsuccessful in doing so.
Jack gets out of jail because Cristina doesn’t press charges, despite Claudia’s insisting. He comes home to the family, where his children have made him a cake. Jack tries to make love to his wife until he tells her that one of the girls he killed looked him right in the eye. He feels terrible about the hit and run incident and the mood is gone.
After the surgery, Paul inquires about whose heart he has, and the doctors say that they cannot tell him. He has a connection with a friend, however, and gets information on the Pecks and Cristina. He follows her to the gym where she swims and tries to talk to her, but she is too depressed to talk to him.
At a bar one night, after much hesitation, Cristina hooks up with her old drug dealer and takes some cocaine and pills. She is high later on and cannot drive. Paul, having followed her, offers to drive her home. He does so and leaves her in her garage with his jacket over her as a blanket.
Later, Paul meets with Cristina outside the gym where it pours very heavily. He drives her home, claiming that he wants his jacket back but she senses his attraction to her. He drops her off and gives her his cell phone number. Paul asks to meet her at a restaurant the very next day, and she accepts.
At the hospital, a doctor tells Paul that the donated heart is failing and he will need to get a new one to survive. Paul doesn’t want to so he tells the doctor that the only reason they are trying to give him another heart is so that he can die better. He refuses the offer.
There is an underlying and slowly escalating tension between Paul and Mary, and when she informs their friends about the insemination, he becomes upset. Their marriage is slowly going down the toilet.
Cristina meets up with Paul for lunch and they go back to her house. He becomes dizzy and says that he wants to leave. Paul tells her that he really likes her and wants to see her again. Cristina says “I am a married woman.” He comes close to telling her that he has Michael’s heart but can’t phrase it. He leaves.
One morning, in the early hours of the AM, Cristina calls Paul on his cell phone and asks for him to come over to her house. Mary is curious about where he is going and he refuses to tell her. Paul goes to Cristina’s house, where she tells him that she hasn’t spoken to anyone in months. They passionately kiss until he stops her and tells her that he has her husband’s heart. She slaps him hard and kicks him out, thinking that he just wanted to sympathize for her. The next morning, Cristina awakes to find Paul asleep in his car. She apologizes and brings him back inside, where the two have sex. He discovers her cocaine afterward and is a little disturbed by it.
Paul goes home to see that Mary is packing her bags and wants to leave. He leaves before she does, and Mary isn’t seen anymore throughout the film. The relationship with Cristina carries on for a while and he tries with all of his might to make her stop taking cocaine. They have a screaming fight, where Cristina explains that it is their duty to find the culprit of her family’s death. They embrace. Paul meets with his friend for connections with finding Jack. Paul is given a loaded gun and information about Jack.
Jack is staying at a motel, the problems at home too much to bear. Cristina and Paul go to the motel and plot the killing. While Cristina sleeps, Paul goes outside the motel to find Jack. He threatens him with a gun and brings him out into the desert, where he threatens to shoot Jack but instead shoots at the ground several times. Paul tells Jack to disappear forever. Jack is gone.
Paul later tells Cristina that he killed Jack and that the job is done. Later, as they sleep in the motel, Jack comes into the room and threatens the couple. Paul tries to fight back but steps on a broken glass and falls to the ground. Cristina violently attacks Jack with a lamp and in a surprise moment, Paul shoots himself in the heart with the gun. Cristina flips and pleads for Jack to call the hospital. He drives the bleeding Paul and the distraught Cristina to a hospital near the motel. Paul goes into the ER and Jack tells the police that he shot him.
In the hospital, the doctor tells Cristina that he will need blood. She agrees to donate it herself. She later is told that the surgeons could not use Cristina’s blood because it contains high levels of illegal substance. A doctor warns Cristina to be careful because she is pregnant.
Later, Jack is released from jail on account of lack of evidence, even though Jack did not shoot Paul despite his claims.
In a voiceover, Paul explains that 21 grams is the weight we lose when we die and wonders who will be the next person to lose 21 grams.