As an old man having his sixth heart attack while playing golf, Hardy Greaves (Jack Lemmon) contemplates how his late wife used to ask him why he kept playing “a game that seems destined to kill” him. Explaining his love for the game, he begins the story of his childhood idol: Rannulph Junuh (Matt Damon).
Junuh is the favorite son of Savannah, Georgia: a noteworthy golfer from a wealthy family; he and his beautiful girlfriend named Adele Invergordon (Charlize Theron) seem to have it all. While serving as a captain in the U.S. Army during World War I, Junuh is traumatized when his entire company is wiped out in battle. Though he earns the Medal of Honor, he disappears after the war, returning to Georgia years later as a broken-down alcoholic.
At the start of the Great Depression (circa 1930), Adele is trying to recover her family’s lost fortune by holding a four-round, two-day exhibition match between Bobby Jones (Joel Gretsch) and Walter Hagen (Bruce McGill), the best golfers of the era, with a grand prize of $10,000, at a golf resort her father opened as the Depression struck. However, she needs a local participant to generate local interest. The young Greaves (J. Michael Moncrief) speaks up for his hero, Junuh, prompting Adele to ask her estranged lover to play.
Junuh is approached by a mysterious traveler carrying a suitcase, who appears while Junuh is trying to hit golf balls into the dark void of the night. The man identifies himself as Bagger Vance (Will Smith) and says he will be Junuh’s caddie. With Greaves as assistant caddie, Bagger helps Junuh come to grips with his personal demons and play golf again.
When the match starts, Jones and Hagen each play well in their distinctive ways, but the disengaged Junuh plays poorly and is far behind after the first round. With Bagger caddying for him and giving advice, Junuh rediscovers his “authentic swing” in the second round and makes up some ground. In the third round, he closes the gap even more, hitting a hole in one in the process. Meanwhile, Junuh and Adele rekindle their romance.
Late in the final round, Junuh disregards Bagger’s advice at a crucial point and, after that, plays poorly. He hits a ball into a forest, where he has a traumatic World War I flashback, but Bagger’s words help him to focus on the game. Junuh pulls back to a tie with Jones and Hagen, then has a chance to win on the final hole, but has the integrity to call a penalty on himself when his ball moves after he tries to remove a loose impediment.
Seeing Junuh has grown and matured, Bagger decides that his golfer does not need him any more. With the 18th hole left unfinished, Bagger gives the position of caddie to Greaves and leaves Junuh as mysteriously as he came.
Though losing a chance to win because of the penalty, Junuh sinks an improbable putt and the match ends in a gentlemanly three-way tie. The three golfers shake hands with all of Savannah cheering. Junuh and Adele get back together.
The old Greaves wakes up and sees a never-aging Bagger Vance on the golf course. As Bagger beckons, Greaves follows.