In Sultanpur, a picturesque village in Azad Kashmir, villagers gather to watch a televised cricket match between India and Pakistan. Among them is a pregnant woman (Meher Vij) who, after giving birth, names her daughter Shahida after Shahid Afridi, the player who wins the game for Pakistan. One afternoon, Shahida (Harshaali Malhotra), now six years old, falls off a cliff, but is saved by an overhanging tree. Her worried mother takes her to the shrine of Sufi saint Nizamuddin Auliya in Delhi, wit
h the hope that it will cure Shahida's speechlessness.
Returning from Delhi, the train stops for repairs and Shahida gets off to play with a lamb. Unbeknownst to Shahida, the train drives off. Shahida boards a freight train, and winds up in Kurukshetra in the state of Haryana. There, she meets Pawan Kumar Chaturvedi also known as Bajrangi (Salman Khan), a devout Brahmin and an ardent devotee of the Hindu deity Hanuman. He calls Shahida "Munni" and tries in vain to find where she lives.
In sequences of flashback, it is revealed that Bajrangi has been a disappointment to his father, because Bajrangi failed his school exams ten times. When Bajrangi finally graduates on his eleventh try, his father dies of shock. Bajrangi, looking for a job, goes to the house of his father's friend and wrestling coach, Dayanand (Sharat Saxena), in Delhi. Having spent time together with his daughter Rasika (Kareena Kapoor Khan), they fall in love with each other and Dayanand promises of getting them married on the condition that Bajrangi get a job and buy a house. In the present, Bajrangi brings Munni to meet Dayanand, another devout Brahmin, who lets Munni stay, believing that with her fair complexion, Munni must be a Brahmin as well. Munni gets accustomed to being part of the household. It is eventually revealed that Munni is a Pakistani Muslim. An enraged Dayanand orders Bajrangi to make arrangements to have her sent to Pakistan through the Pakistan Embassy, where Bajrangi's pleading fails. A sudden turn of events stirs him to take Munni to her parents in Pakistan, in person and without a passport and visa.
Bajrangi and Munni are able to enter Pakistan. Shortly after their arrival, Bajrangi is arrested, suspected of being an Indian spy. He escapes with Munni and meets Chand Nawab (Nawazuddin Siddiqui), a journalist who works for a Pakistani television channel. Nawab has closely been following the developments. Moved by the story, Nawab joins Bajrangi to help him find Munni's parents. They are joined by an Islamic religious scholar (Om Puri), who helps them avoid capture by police. He directs the group to Azad Kashmir after Munni recognizes an area similar to her hometown in a photo from a calendar.
Nawab documents their journey on video, but no television station agrees to air it. Disappointed, he uploads the video on the Internet. While reviewing the footage, Munni recognizes her mother walking by in the background. With a bus driver's assistance, the trio identify Sultanpur as Munni's hometown. They board a bus to Sultanpur, and are stopped by police who are looking for 'the Indian spy'. Devising a plan to divert their attention, Bajrangi gets off the bus and runs toward the jungle in full view. He gets tracked down, beaten, and shot in the arm. Meanwhile, Nawab and Munni reach Sultanpur, where Munni is finally reunited with her mother.
The videos uploaded by Nawab go viral throughout India and Pakistan. A compassionate senior officer Hamid Khan (Rajesh Sharma) realizes that Bajrangi is innocent, and has him released, defying the order of keeping him in jail, which he felt would be petty on the part of Pakistan. Thousands of Pakistanis come to see Bajrangi off and Indians come to receive him. As Bajrangi crosses the border, Shahida, who is also in the crowd, runs toward the fence and cries out for him with her now regained speech. Bajrangi is ecstatic to see her and they run towards each other and embrace