The film starts in the 1960 Summer Olympics in Rome, where a coach says "Bhaag Milkha Bhaag!", and the story is taken back to the memories of the childhood days of a young boy which haunted him, resulted in him dropping to fourth. Partition of India in 1947 caused chaos which resulted in mass religious violence in Punjab in British India, killing the parents of Milkha Singh (Farhan Akhtar). He reaches Delhi and later meets his sister there. Living in impoverished refugee camps, 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. Milkha finally finds himself in the army where he gets noticed by a Havaldar (Sergeant) after he wins a race in which top 10 runners will get milk, two eggs and excused from exercise. He gets selected for service commission where he gets miffed and also gets beaten up by senior players whom he had defeated earlier, on the day before selection of Indian team for Olympics. In spite of being injured he still participates in the race, overcoming his pain he wins the race thus breaking the national record.
During the Melbourne 1956 Olympics he gets attracted to the granddaughter of his Australian technical coach, and after a frolicking night in a bar he has a one-night stand with her. The following day he feels exhausted from the previous night's activities and loses the final race. He realizes his mistake. Suffering from guilt he even slaps himself in front of a mirror. On the flight back to India he asks his coach what the world record is for the 400m race and learns that it is 45.90 seconds. He trains hard with a firm determination and wins in several places. He then breaks the world record for the 400m race with the dashing speed of 45.80 seconds. Then Jawaharlal Nehru, the Prime Minister of India at that time convinces him to lead the Indian team in Pakistan for a friendly race. 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 comforted by a boy who turns out to be his childhood friend's son. In the games, initially the Pakistani favourite is winning, but Milkha takes the lead eventually overtaking opponents one by one, taking a convincing lead and winning both the race and respect of the two nation's people. The Pakistani president, General Ayub Khan, impressed by his effort gives him the title "The Flying Sikh". Jawaharlal Nehru also declares a day in the name of Milkha as "National Holiday" as desired by Milkha himself.