This family-oriented comedy focuses on Aman Sharma a.k.a. Banku (Aman Siddiqui), who has recently shifted into an old bungalow in Goa, with his parents, Aditya (Shah Rukh Khan) and Anjali (Juhi Chawla). His father Aditya is an engineer on a cruise line, and therefore moves with his cruise.
They are made aware that the bungalow is haunted, but they disregard this. Banku is enrolled in St. Francis High School, and Anjali hires a kindhearted and comedic drunken thief, Anthony (Rajpal Yadav), as a servant to clean the house.
One night, Banku goes down to the living room to have some ice-cream when he sees a shadow on the wall. Frightened, he calls out to his mother, before seeing that the bowl in which he was having ice-cream has vanished. Later, Banku returns and passes a sleeping Anjali to investigate.
He then sees the ghost of Kailash Nath (Amitabh Bachchan) and then they start arguing on whether Kailash is a ghost or an angel (according to Banku, who constantly persists that Nath is an angel rather than a ghost). Banku nicknames him Bhootnath as Kailash says that he is a bhoot (ghost) and also says that Nath is his last name.
Since the ghost of Kailash does not want anybody to occupy his house, he tries different ways to scare Banku and his mother, but Banku considers him as angel and treats him like a friend. Soon, Bhoothnath accepts by Banku's innocent love after a minor incident, as Banku fell from the stairs for which Bhoothnath is in fact responsible for.
The two become friends and thoroughly enjoy the company of one another. It is at this point that Bhoothnath's son returns from the United States and plans to sell off the bungalow. Angered, Bhoothnath scares the buyers, but in the process Anjali comes to know his existence.
He then tells his story to Banku and Anjali about how his son deserted him at a time of need for him, along with the story of his death. Later, Aditya and Anjali decide to perform the final rites of Bhoothnath to give him Moksha. It is performed by Banku and Bhoothnath bids an emotional farewell to Banku. By this time, Bhoothnath's son also comes to know of his fault and apologizes.
In the end, Banku, who is sad that Bhoothnath is no more, sees Bhoothnath again, who says that he is always there for him and makes Banku promise not to tell his parents about his return and also requests the viewers the same in the post credits scene.