In 1958, Katey Miller (Romola Garai), her parents (Sela Ward and John Slattery), and her younger sister Susie (Mika Boorem) arrive in Cuba during the Cuban revolution. A self-described bookworm, Katey is not very happy about having to move to a different country during her senior year of high school, as she had been planning to attend Radcliffe College, although the rest of her family seem extremely pleased to be in Cuba.
Meeting several other rich American teenagers down by the pool - including James Phelps (Jonathan Jackson), the son of her father's boss - Katey becomes disgusted when one of the teenagers insults a local waiter when he drops their drinks because Katey accidentally bumped into him. Katey attempts to talk to the waiter—Javier (Diego Luna), who works at the hotel to support his family—because she feels awful about what had occurred, but he is not interested.
Katey watches a film of her mother and father dancing and wishes she could dance as well as they did. She and her father dance a bit. The next day in class, Katey is asked to read aloud from The Odyssey - a passage about love and passion. After class, James invites her to a party at the country club the next day and she accepts.
While walking home from school, she sees Javier dancing to street music, and he offers to walk her home. They stop to listen to a street band and police show up, stopping Javier while Katey runs away.
The next day, Katey tries some of the dance moves she saw. Javier sees her and asks her to come see the real dancers Saturday night, but she says she is already going to the country club. Javier gets upset and leaves. Katey wears one of her maid's dresses to the country club party and impresses James. Katey convinces him to take her to the Cuban nightclub La Rosa Negra (The Black Rose) where Javier is dancing with the ladies.
Javier dances with Katey while James sits at the bar. Soon he is accosted by Javier's brother, Carlos, who tells him that they will eventually kick the Americans out of Cuba. Javier comes over and argues with his brother. James takes Katey back to the car and assaults her after she refuses to kiss him. She slaps him and runs into the club, and Javier agrees to walk her home.
The next day, Katey walks by a dance class. The teacher (Patrick Swayze) asks if anyone wants to enter the big dance contest and then dances with Katey for a bit. She grabs a flyer for the competition.
While walking to the pool, James apologizes to Katey and then tells her that Susie saw Javier with her and got him fired. Katey argues with Susie and goes to find Javier. He is now working at a chop shop with Carlos. She asks him to enter the dance contest with her, but he refuses. Meanwhile, it is becoming apparent that Carlos is helping the revolutionaries.
The next day, Javier shows up at Katey's school and agrees to enter the dance contest with her. They start teaching each other dance moves and Javier convinces her to "feel the music." They practice all the time, and Katey dances some more with the dance teacher, until it is the night of the dance. Katey and Javier dance with the other couples on the floor and are chosen to go on to the next round.
Katey's parents disapprove of her relationship with Javier, but Katey reconciles with them. On the night of the contest's final round, while Katey and Javier are on the dance floor, Javier sees his brother and some revolutionaries disguised as waiters, and the police soon try to arrest them. The contest stops as everyone flees the club, and Javier has to save Carlos from the police. Javier and Carlos talk about how they miss their dad, then they hear that Batista has fled the country and join the celebration.
Later, Javier comes to the hotel and finds Katey. He takes her to the beach and they have sex. The next day, Katey's parents tell her they are leaving Cuba and she has one last night with Javier. They go to the Cuban club where they first danced, and the floor is theirs as they are dubbed King and Queen. Katey's family is there to see her, and Katey narrates that she doesn't know when she will see Javier again, but this will not be their last time to dance together.
Romola Garai as Katey Miller
Diego Luna as Javier Suarez
Sela Ward as Jeannie Miller
John Slattery as Bert Miller
Mika Boorem as Susie Miller
Jonathan Jackson as James Phelps
Rene Lavan as Carlos Suarez
Patrick Swayze as Dance Class Instructor
January Jones as Eve
Mýa as Lola Martinez
Angélica Aragón as Mrs. Suarez
also known as Dirty Dancing: Havana Nights and Dirty Dancing 2: Havana Nights