Zubeidaa is the story of a Riyaz's (Rajit Kapoor) search to understand his mother who is not known to him. His mother's name was Zubeidaa (Karisma Kapoor) and she was the only daughter of a filmmaker Suleman Seth (Amrish Puri). Zubeidaa acts in films secretly but when her father finds out he forbids her to carry on and quickly arranges her marriage to Mehboob Alam.
Things look happy for her when she gives birth to Riyaz. However due to a misunderstanding between her in-laws and her father, Mehboob divorces Zubeidaa same day she gave birth.
She meets Maharaja Vijayendra Singh of Fatehpur (Manoj Bajpai). Vijayendra is already married to Rajmata Mandira Devi (Rekha) and is the father of two children. He falls in love with Zubeidaa however, and they get married. But there is continuous turmoil in their relationship. Riyaz learns through her journal that though she loved Vijayendra dearly, she was, being a Muslim, unable to follow the mainly Hindu customs and traditions of the palace. She was also uncomfortable as her brother-in-law, Uday Singh's sexual advances towards her, and his demands of her to have an extra-marital affair with him. Away from her own family, she was unable to enjoy the beautiful surroundings.
Riyaz, who is in Fatehpur by now, asks many people about his mother. However, all except Mandira, whom Zubeidaa called 'Mandy Didi', deny that his mother ever existed, or say that she was a horrible woman who seduced their king, and was the cause of his death in a mysterious accident.
Riyaz, on reading the journal finds out, that Vijayendra had become a politician, and was about to go to Dehli for an important meeting. Zubeidaa felt frustrated that whenever her husband needed help he looked to Mandira for support. At the last minute, she insists that only she will go for the meeting. They never make it, as they die in a plane crash. In the end, Riyaz watches a tape of one of his mother's films with his family. In the end, Riyaz finally figures out how his mother died.