Will Freeman (Hugh Grant) is a 38-year-old bachelor who prides himself on being "cool". Thanks to royalties from a successful Christmas song that his father composed, Will does not need to work to maintain his leisurely lifestyle. He spends most of his free time smoking, watching television and reading about pop culture.
The story begins when Will's friends Christine (Sharon Small) and John (Nicholas Hutchinson) give birth to their second child; when asked if he would be the child's godfather, Will bluntly refuses, insisting that he "really is that shallow". In an attempt to avoid spending time with Christine and John, he meets Angie (Isabel Brook), a single mother. After sharing a brief relationship with her, Will comes up with the idea of attending a single-parents group (SPAT - Single Parents Alone Together) to meet potential female partners. As part of his ploy, he invents a two-year-old son named Ned.
At one of the single parents group meetings, Will meets Suzie (Victoria Smurfit) and attempts to court her. His pursuit of the single mother takes him to one of the group picnics where he meets Marcus (Nicholas Hoult), the son of one Suzie's friends. Marcus is a 12-year-old, introverted and eccentric boy with a depressed and suicidal mother, Fiona (Toni Collette). At the picnic, Marcus accidentally kills a duck with a stale loaf of bread while trying to feed it, and when a park keeper questions him about it, Will tries to pass it off (the duck) as already dead whilst trying to sink the body so as to not upset the children. When Suzie and Will return him back home, they find Fiona in the living room, overdosed on pills.
After this incident, Marcus begins to be uncomfortable with staying at home, due to his mother's condition. He follows Will, and deduces that he is single, childless: essentially, the complete opposite of how he presented himself. He appears on Will's doorstep, trying to blackmail threaten Will into dating his mother, in hopes that Fiona will no longer be depressed if she has a boyfriend. This doesn't work, so Marcus just hangs out at Will's apartment after school, much to Will's initial dismay.
After many afternoons of an apathetic limbo, Marcus is chased to Will's apartment by bullies, and Will begins to realize the importance of his presence in Marcus's life. He starts helping Marcus to fit into the modern adolescent world by taking him shopping to buy shoes. Unfortunately, these shoes only get stolen a few days later, causing a fight between Marcus, Fiona and Will.
At school, Marcus becomes friends with a Goth girl called Ellie (Natalia Tena) and develops a crush on her. Will also develops a crush on someone, a single woman called Rachel (Rachel Weisz). Will pretends Marcus is his son in order to appear interesting to Rachel. At this point Marcus asks Will for clarification of the difference between a girl that's a friend, and a girlfriend. Will replies that it is all to do with sex. Marcus ponders this and decides that if he is able to be with Ellie often and tell her things, he doesn't care about the idea of sex. Will initially scoffs at this, but later remarks to himself "Yes, I wanted to touch Rachel. But at this moment, if I had the choice...I'd settle for the less and the more that Marcus wanted."
Eventually Will reveals to Rachel that Marcus is not really his son, and the relationship ends. Marcus comes home from school one day to see his mother sitting on the couch crying. He attempts to unburden himself to Will, who is unreceptive as he is still upset about the breakup with Rachel. Will tells Marcus that he can't help him and the two have a fight. Marcus decides that the only way to help his mother is to sing at the school variety show - an act which Ellie deems "suicide". Will continues his superficial existence but realizes that it doesn't fulfill him the way it did before. He remarks "...there was only one thing that meant something to me: Marcus. He was the only thing that meant something to me. And Fiona was the only thing that meant something to him. And she was about to fall off the edge." Will crashes a SPAT meeting and implores Fiona not to commit suicide again. She assures him that she has no plans to do so in the immediate future. Fiona reveals that Marcus is going to sing at the school show and the two rush there to stop Marcus from committing social suicide. At the show, Will sees Rachel in the audience as her son is performing in the show. Will makes his way backstage in an attempt to stop Marcus from singing. Marcus is unswayed and says "My mum wants me to sing it. It'll make her happy." He then proceeds to sing a shrill, out of tune and piercing rendition of "Killing Me Softly". The audience of school children taunts him until Will comes onstage with guitar to accompany Marcus for the rest of the song. With Will's assistance, the school children accept Marcus' performance, giving him mild applause at the end. Seeing this, Will continues to perform an unnecessary solo, with the intent that the school children would remember the performance only for his involvement, and not Marcus'.
The film ends at Christmas the next year. The festivities are at Will's place where Marcus, Rachel, Rachel's son Ali, Fiona and Ellie are present. "Every man is an island," Will remarks, an idea that he had adhered to religiously at the beginning of the film. "But clearly, some men are part of island chains. Below the surface of the ocean they're actually connected." The idea of Will marrying Rachel is brought up, and Marcus seems unenthusiastic. The film ends with Marcus's explanation of his reaction: "I don't know what Will was so upset about. All I meant was I don't think couples are the future. You need more than that. You need backup. The way I saw it, Will and I both had backup now. It's like that thing he told me Jon Bon Jovi said: "No man is an island."