The movie opens with a woman Vasudha (Vidya Balan) getting off from the bus. At 15 km before the Bastar district, she stumbles and falls down after walking a few steps. An elderly man, Hari, sees a psychiatrist about hallucinations of his wife. He is then recruited by his daughter-in-law, who takes him to his wife’s funeral. There, he steals her ashes and leaves a diary for his son.
The story then jumps to the past, where Vasudha is a single mother whose husband is missing for five years. Bound to traditions, she has been waiting for him since he left her. Vasudha meets Aarav Ruparel (Emraan Hashmi) in one of his hotels, where she works as a floral arranger. He creates a mock fire drill in order to watch the capabilities of the security department. Vasudha comes to save him. He offers her a job in his hotel in Dubai, which she refuses. Despite her refusal Aarav asks her to reconsider the offer. Vasudha gets to know from the police that her husband Hari (Rajkumar Rao) has murdered five American journalists and he is a member of a terrorist group. The police asks her to inform about Hari if he ever visits her. Worried for her son’s future, she accepts the offer given by Aarav.
Despite knowing about Vasudha’s past and her son, Aarav falls in love with her. Aarav tells Vasudha about his mother, who was a cabaret singer and a single parent and how she fell in love with a man who tried to commit suicide for failing to save them from poverty. Vasudha shuns his feelings saying that she belongs to someone else and leaves. Vasudha meets Aarav’s mother on his request where she accepts Aarav’s love and both unite. They both spend romantic moments together. Aarav gives a divorce paper to Vasudha before dropping her home. Vasudha then encounters Hari at home, and tells him about Aarav. Hari then storms out in anger where he is arrested by the police and later jailed for being a wanted criminal. Vasudha asks Aarav to save Hari as he is innocent. Aarav tries to save Hari by bribing the home minister who reveals that Hari himself accepted his crime. Vasudha refuses to marry Aarav because Hari’s action tells her that he sacrifices his life for them to be together. It is then revealed to Aarav that Hari deliberately accepts his crime so that Vasudha will live in guilt as she will think Hari sacrificed himself for their love. In order to free Vasudha out of her guilt, Aarav travels to Bastar where Hari is accused of killing, to prove Hari’s innocent. Aarav meets Father Dayal who explains what happened with the journalists and reveals Hari’s innocence. On the way back to Mumbai, Aarav smells the scent of the same flowers which first caused him to meet Vasudha. Following the scent, he goes into the jungle, not knowing that the place has mines. He accidentally steps on one of the mines. Realising his predicament, Aarav smiles just before taking his foot off the mine. Vasudha receives the news of Aarav’s death and is shattered. Vasudha leaves Hari, who searches for her for two years. After finding her, she reveals to him that she knows about his fake sacrifice and tells him that she is not afraid of any traditions and boundaries. He warns her that she will come back to him one day. Hari waits for Vasudha twenty-one years in vain.