In Sultanpur, a picturesque village in Azad Kashmir, Pakistan, villagers gather to watch a televised cricket match between India and Pakistan. Among them is a pregnant woman Rasia (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 as she plays, and is saved by an overhanging tree, but was not able to call for help since she was mute. Since Shahida's father Rauf, a former Pakistani army man, is unlikely to be granted an Indian visa, a concerned Rasia takes her to the shrine of Sufi saint Nizamuddin Auliya in Delhi, hoping it will restore Shahida's speech.
Returning from Delhi, the train stops for repairs just short of the Wagah crossing and Shahida gets off to save a lamb. The train drives off before Shahida can re-board it. Shahida boards a freight train and winds up in Kurukshetra, Haryana. There, she meets Pawan Kumar Chaturvedi alias Bajrangi (Salman Khan), a devout Hindu Brahmin and an ardent devotee of Lord Hanuman. He names her "Munni" and tries in vain to find out where she lives.
In sequences of flashbacks, it is revealed that Pawan has been a disappointment to his father, after failing in his school exams ten times. When he finally graduates on his eleventh try, his father dies of shock. Pawan, looking for a job, follows the advice of his father and goes to the house of his father's friend and wrestling coach, Dayanand Pandey (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 Rasika's hand in marriage on the condition that Pawan gets a job and a separate house for himself.
In the present, Pawan brings Munni to meet Dayanand, 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 as she performs Salah at a mosque, and cheers for the Pakistani national cricket team during a televised India-Pakistan cricket match. An enraged Dayanand orders Pawan to make arrangements to have her sent to Pakistan through the Pakistani High Commission, where his pleading fails; the High Commission is then closed for a month due to protests. He is betrayed by a local travel agent who claims to be able to take Munni to Pakistan without a passport but rather takes her to a brothel, causing him to destroy the brothel and beat up several of its occupants. Pawan then vows to take Munni to her parents in Pakistan, in person and without a passport and visa.
Pawan and Munni are able to enter Pakistan. Shortly after their arrival, Pawan is arrested under suspicions 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 decides to join Pawan to help him find Munni's parents. They encounter an Islamic religious scholar, Maulana Asad (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 his television station channel head Shamsher Ali (Harssh A. Singh) refuses to air it. Disappointed, he uploads the video to youtube while Munni and Pawan attend a Muslim Pilgrimage in order to pray to find Munni's parents. While reviewing the footage, Munni recognizes her mother walking by in the background. With a bus driver's assistance, the trio identifies 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, Pawan 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 Pawan is innocent, and has him released, defying the order to keep him in jail, which he felt would be petty on the part of Pakistan. Responding to a call by Nawab, thousands of Pakistanis and Indians congregate at Narowal Check Post, where Pawan is to return to India. As Pawan crosses the border, Shahida, who is also in the crowd, runs toward the fence and cries out for him with her now regained speech. Pawan and Shahida run towards each other and embrace.