At his son's wedding party, Edward Bloom (Albert Finney) tells the same tall tale he's told many times over the years: on the day Will (Billy Crudup) was born, he was out catching an enormous uncatchable fish, using his wedding ring as bait. Will is annoyed, explaining to his wife Joséphine (Marion Cotillard) that because his father lives in a fantasy world and has never told the straight truth about anything, he felt unable to trust him. He is troubled to think that he might have a similarly difficult relationship with his future children. Will's relationship with his father becomes so strained that they do not talk for three years. But when his father's health starts to fail from cancer, Will and the now pregnant Joséphine return to his hometown in Alabama to visit. On the plane, Will recalls his father's tale of how he braved a swamp as a child after he was dared by a few other children. He meets a witch (Helena Bonham Carter). She shows Don Price and another boy how they were going to die. They run away, frightened. When the witch shows Edward his death in her glass eye, he accepts it without fear. With this knowledge, Edward knew there were no odds he could not face.
As Will sits by his dying father's bedside, Edward continues telling tall tales, claiming he spent three years confined to a bed as a child because his body was growing too fast. While in high school, Edward became a successful athlete, but found the town of Ashton too small for his ambition, and set off with the misunderstood giant Karl (Matthew McGrory). The witch with the glass eye is seen bidding him farewell. While traveling, Edward and Karl see two separate roads out of Ashton. Edward suggest they each take one way. He'll take the old dirt road and Karl should take the new paved road. They will meet on the other side. Karl feared that Edward was attempting to abandon him, but Edward gives him his backpack to prove that he isn't.
After walking through a scary swamp, Edward discovers the hidden town of Spectre, where everyone is friendly to the point of comfortably walking around barefoot. Their shoes can be seen hanging from a wire near the entrance. When he enters the town he is greeted by the Mayor and his wife. The Mayor has a clipboard that says Edward was meant to be in their town but he had arrived early. He also tells him of the poet Norther Winslow (Steve Buscemi) who was also from Ashton. While there Edward has an encounter with a mermaid. She swims away before he could see her face. Edward leaves because he does not want to settle anywhere yet, but promises to the town mayor's daughter Jenny (Hailey Anne Nelson), who developed a crush on him, that he will return. He believed that he was fated to be there someday.
Edward meets up with Karl. They attend the Calloway Circus where Edward falls in love at first sight with a mysterious woman. Together, Karl and Edward begin working at the circus. Karl meets his destiny by working as the giant man, replacing the old one who is much smaller than him. Edward works without pay, as he has been promised by the ringmaster Amos Calloway (Danny DeVito), who claims to know the mysterious woman, that each month he will learn something new about the mysterious woman. Three years later, having only learned trivia about her, Edward discovers Amos is a werewolf. In return for his refusal to harm him in his monstrous state, Amos tells Edward the girl's name is Sandra Templeton (Alison Lohman) and she studies at Auburn University.
Edward goes to Sandra to confess his love. He learns Sandra is engaged to Don Price (David Denman), whom Edward always overshadowed during his days in Ashton. Sandra refuses Edward's proposal but that does not discourage Edward. He writes "I love Sandra" everywhere he could. Don arrived to challenge Edward to a fight over Sandra. Sandra makes Edward promise not to fight Don. Edward allows Don to beat him up. Sandra, disgusted by Don's violence, ends their engagement and falls for Edward. Edward later reveals that Don died from a heart attack on the toilet bowl at an early age (as Don saw in the Witch's eye).
During his recovery, Edward is conscripted by the army and sent to fight in the Korean War. He parachutes into the middle of a show entertaining North Korean troops, steals important documents, and convinces Siamese twin dancers Ping (Ada Tai) and Jing (Arlene Tai) to help him get back to the United States, where he will make them stars. He is unable to contact anyone on his journey home, and the military declares him dead. This limits Edward's job options when he does return home, so he becomes a traveling salesman. Meeting the poet Norther Winslow from Spectre again, Edward unwittingly helps him rob a bank, which is already bankrupt. Edward explains this to Winslow, who then decides that he will work at Wall Street. Winslow later thanks Edward for his "advice" by sending him $10,000, which he uses to buy his family a dream house.
In the present, still unimpressed by his father's stories, Will demands to know the truth, but Edward explains that he is who he is: a storyteller. While doing his own investigation into his father's stories, Will finds the small town of Spectre, and meets an older Jenny (Helena Bonham Carter), who explains that Edward rescued the town from bankruptcy by buying it at an auction and rebuilding it with financial help from many of his previous acquaintances. Will suggests his father had been having an affair with Jenny, to which she replies that while she had indeed fallen in love with him, Edward could never love any woman other than Sandra.
When Will returns home, he is informed his father had a stroke and is at the hospital. He goes to visit him there and finds him only partly conscious, and unable to speak at length. Since Edward can no longer tell stories, he asks Will to tell him the story of how it all ends. Beat and deciding to play along, Will tells his own tall tale about helping Edward escape from the hospital and they go to the river where everyone in Edward's life appears to bid him goodbye. Will carries his father into the river where he becomes what he always had been: a very big fish. Edward then dies, knowing his son finally understands his love of storytelling.
At Edward's funeral, Will is astonished when all of the characters from Edward's stories appear to pay their condolences to his father; Amos, Karl, Norther Winslow, Jenny, Ping and Jing all arrive, though each one is a slightly less fantastical version of themselves than in Edward's stories – the sisters, for example, are not conjoined but are merely identical twins. Will finally realizes the truth of his father's life for which his stories were embellishments. When his own son is born, Will passes on his father's tall tale stories, remarking that his father became his stories, allowing him to live forever.
- Ewan McGregor as Edward Bloom (young)
- Albert Finney as Edward Bloom (older)
- Jessica Lange as Sandra Bloom (older)
- Alison Lohman as Sandra Bloom (young)
- Billy Crudup as Will Bloom
- Marion Cotillard as Josephine Bloom
- Matthew McGrory as Karl the Giant
- Helena Bonham Carter as Jenny/ The Witch
- Robert Guillaume as Dr. Bennet
- David Denman as Don Price (older)
- Missi Pyle as Mildred
- Danny DeVito as Amos Calloway
- Deep Roy as Mr. Soggybottom
- Steve Buscemi as Norther Winslow
- Loudon Wighwright III as Beanmen
- Ada Tai as Ping
- Arlene Tai as Jing
- Miley Cyrus as Ruthie
- Christopher McPherson as Edward Bloom (child)
- Haley Anne Nelson as Jenny (child)
- Grayson Stone as Will Bloom (child)
The critical reaction to Big Fish was mostly positive.