Veer Pratap Singh (Shahrukh Khan) est un prisonnier indien au Pakistan. Une jeune avocate, Saamiya Siddiqui (Rani Mukherjee), fille d'un ancien militant des droits de l'homme, prend son cas en main et cherche à comprendre ce qui s'est passé, et comment faire libérer cet homme qui a été emprisonné sous de faux prétextes 22 ans plus tôt. D'abord réticent, Veer se livre peu à peu et raconte son histoire.
Veer Pratap Singh est chef d'escadron dans une unité de sauvetage en hélicoptère en Inde, lorsqu'il croise le chemin de Zaara Hayat Khan, jeune Pakistanaise venue seule en Inde disperser les cendres de sa nourrice.
Zaara (Preity Zinta) est un peu perdue, alors Veer décide de l'accompagner pour qu'il ne lui arrive rien. Veer et Zaara tombent irrémédiablement amoureux, de cet amour si fort qu'on donnerait sa vie pour l'autre, de cet amour absolu qui crée les légendes...et les tragédies.
Car Zaara a oublié de dire à Veer qu'elle est fiancée au Pakistan, que son père, richissime, noue avec ce mariage une alliance historique avec un autre clan qui doit lui assurer la victoire politique.
Elle retourne donc au Pakistan, et Veer à ses missions.
Ce n'est qu'une fois rentrée chez elle qu'elle réalise l'intensité de son amour pour Veer. Se confiant à sa servante et amie Shabbo (Divya Dutta), celle-ci appelle Veer au secours.
Militaire indien, Veer n'a pas le droit de fouler le sol Pakistanais, mais il vient, n'écoutant que son c½ur, retrouvant Zaara... pour de trop courts instants, avant de se retrouver dans cette prison.
Saamiya l'avocate arrivera-t-elle à faire éclater la vérité ? Malgré la décision de Veer de ne pas citer le nom de Zaara pour ne pas lui nuire 22 ans plus tard, alors qu'elle est probablement mère de famille dans une grande famille pakistanaise ... et malgré l'acharnement du grand avocat qui lui est opposé (Anupam Kher).