Naina (Deepika Padukone) is a shy and nerdy medical student. She studies constantly and always tops her classes. An encounter with an old classmate, Aditi (Kalki Koechlin), makes her realise that she wants more from life than high marks. She makes an impulsive decision to follow Aditi on a commercial hiking trip into the Himalayas, up to Manali. During the hike, she renews her friendship with another former classmate, Kabir "Bunny" Thapar (Ranbir Kapoor). Bunny is a handsome charmer whose dream is to travel the world. He does not plan to marry or settle down.
In the course of the mountain trek, Bunny and Naina draw closer to each other. Bunny teaches Naina to laugh, to play, and to love. At the end of the trip, she is close to telling Bunny how she feels, but is interrupted by their friend Avi (Aditya Roy Kapur). He has searched Bunny's backpack and found a letter accepting Bunny to graduate school in journalism, at Northwestern University. Bunny explains that the trip is his last fling before he leaves. He will be sad to leave his friends, but happy to start a career that will lead to the travel of which he dreams. Naina realises that love and marriage form no part of Bunny's plans and remains silent about her feelings.
Eight years pass. Naina finishes medical school and works in a clinic. Bunny works as a television cameraman for travel shows and roams the world, as he had planned. They meet again in Udaipur, for Aditi's lavish wedding to Taran (Kunaal Roy Kapur), an awkward but adoring engineer. Naina and Bunny are again strongly attracted to each other. Both resist love Bunny because he does not want to give up a dream job he has been offered (as a travel show host), Naina because she fears that Bunny will break her heart again. Will they find a way to be together? Spectacular dance numbers punctuate a rollercoaster romance. Only in the last few minutes of the film does love triumph.