Lagaan is set in the town of Champaner, located in the western Indian state of Gujarat, during the oppressive era of the British Empire in 1893. The local villages are suffering under the weight of exorbitant taxes known as "lagaan," enforced by Captain Andrew Russell (Paul Blackthorne), the commanding officer of the Champaner cantonment. With a severe drought making it impossible for the villagers to pay these taxes, they turn to Raja Puran Singh (Kulbhushan Kharbanda) for assistance. However, the Raja sadly informs them that he, too, is constrained by British laws and cannot offer help.
During this desperate time, the villagers come across a cricket match, a game they know little about. When Bhuvan (Aamir Khan), the leader of the villagers, derisively mocks the sport, he finds himself in conflict with one of the British officers. Angered by Bhuvan's attitude, Russell proposes a wager: if the villagers manage to defeat his team in a game of cricket, their taxes will be halted for three years. On the flip side, if they lose, they must pay three times their usual tax amount. Without consulting the villagers, Bhuvan boldly accepts this challenge, igniting a wave of anger among his people. He passionately argues that they should rise against British oppression.
Thus begins Bhuvan's arduous journey to prepare the villagers for their monumental match. Initially, he struggles to find teammates, but he is joined by Elizabeth (Rachel Shelley), Russell's sister, who disapproves of her brother's treatment of the locals. As she helps the villagers learn the game, a romantic bond grows between her and Bhuvan, complicating feelings in the village, particularly for Gauri ([Gracy Singh]), who harbors her own affections for him. Furthermore, Lakha ([Yashpal Sharma]), a woodcutter also in love with Gauri, is consumed by jealousy. In a treacherous move, he offers to act as a spy for Russell, hoping to sabotage Bhuvan’s team from within.
As Bhuvan continues to rally support, the villagers gradually realize that the game symbolizes their fight for freedom. However, when recruiting an untouchable player, Kachra ([Aditya Lakhia]), who is skilled at bowling, they initially reject him due to ingrained prejudices. Bhuvan confronts these biases, ultimately persuading them to accept Kachra and join him in the struggle.
The film then delves into the intense cricket match itself. On the first day, Russell's team wins the toss and opts to bat, securing an impressive start. Challenges arise for Bhuvan as Kachra struggles to bowl effectively, and Lakha, under Russell's influence, intentionally fails to catch the ball, putting the villagers' trust in jeopardy. In a pivotal moment, Elizabeth uncovers Lakha’s betrayal and rushes to inform Bhuvan, who shows mercy towards Lakha and allows him a chance for redemption.
As the match progresses, the villagers face mounting tensions. On the third and final day, with the spotlight on Bhuvan and Kachra, the game reaches a nail-biting climax. Despite injuries and setbacks, Bhuvan's determination sees him achieve a century, and the game leans towards a dramatic conclusion. In a twist of fate, Kachra's batting mishap results in Russell believing his team has triumphed; however, it is revealed that the ball was caught beyond the boundary line, earning six runs for Bhuvan's team and securing their victory.
As rain begins to pour down, signaling the end of the drought, the villagers celebrate their triumph over British oppression. Russell faces a humiliating defeat, resulting in his reassignment to Central Africa and the disbanding of the cantonment. Meanwhile, Elizabeth, heartbroken upon realizing Bhuvan's love for Gauri, returns to London, choosing to remain unmarried. Ultimately, Bhuvan marries Gauri, symbolizing hope and resilience in the face of adversity.