The film starts in the 1960 Olympic Games in Rome, where a coach says "Bhaag Milkha Bhaag!"Milkha (Farhan Akhtar in a scintillating role) begins to run, and would have easily won, had he not glanced back as he nears the end of the race. The backward glance costs him the bronze. In a flashback, then, the story goes back to his childhood. We see how his happy childhood days come to an abrupt end when the land on which he and his family lived becomes a part of the new Pakistan.
The partition caused chaos which resulted in war with the locals of Punjab in Pakistan, killing the parents of Milkha Singh. He reaches Delhi and later meets his sister there. Milkha soon makes friends and survives by stealing with his friends. He falls in love with Biro (Sonam Kapoor) but she asks him to live a life of honesty. She promises to wait for him to return from a training camp, but when Milkha returns, he discovers that her father got her married to someone else. Milkha finally finds himself in the army where he gets noticed by a Havaldar (Pawan Malhotra) after he wins a race in which top 10 runners will get milk, two eggs and excuse from exercise. He gets selected for service commission where he gets miffed and also gets beaten up by senior players who are already members of the Indian running team. In spite of being injured he still participates in the race, overcomes his pain and wins the race. His coach tells him that he has broken the national record.
In the Melbourne Olympics he gets attracted to the granddaughter of his Australian technical coach, and after a night in a bar he sleeps with her. He loses the race, beats himself up and on the way back to India asks his coach to tell him what the world record for the 400m race is. He trains hard with a firm determination and wins in several places. Then Jawaharlal Nehru convinces him to lead the Indian team to Pakistan for friendly races. In Pakistan he misses the press conference and goes to his village where in a flashback it is shown how his parents were murdered and the last words of his father were "Bhaag Milkha Bhaag!" He starts crying and is confronted by a boy who turns out to be his childhood friend's son. In the games, the Pakistani favorite is winning, when Milkha puts on speed, overtaking opponents one by one, takes a convincing lead and wins the race and respect of both the nations' peoples. The Pakistani Chief of Army, Gen. Ayub Khan then gives him the title "The Flying Sikh".