It's 1903 Rome and Prince Amerigo (JEREMY NORTHAM) is showing his former lover, Charlotte Stant (UMA THURMAN), through the dilapidated mansion in which his aristocratic ancestors sunk all of the family money. In need of wealth, Amerigo has agreed to marry Maggie (KATE BECKINSALE), the proper daughter of Adam Verver (NICK NOLTE), a wealthy American expatriate who made his fortune in the American coal business. Still being in love with the Prince, Charlotte isn't happy about losing him to Maggie - who isn't aware of the lovers' past -- even if the two women have been friends since childhood.
Years later, Amerigo and Maggie are married with a young son in England, while Adam and Charlotte have also tied the knot. Yet, and despite the four getting along rather well, Charlotte still longs for her former lover who's discovered that his wife and her father are still as inseparable as they were before the marriages. Although the two agree that they must constrain themselves for the sake of their new spouses, Amerigo and Maggie end up spending ever more time together, a point that doesn't sit well with Fanny Assingham (ANJELICA HUSTON), the woman who introduced the two despite being aware of his past relationship with Charlotte.
As the years pass and Amerigo and Maggie eventually have an affair, they try to keep their adulterous behavior secret from their respective spouses who eventually become suspicious and jealous of the time and attention the two pay to each other.