Sylvie Cooper (Melissa Gilbert) is a alienated and misanthropic teenage girl at a private high school for the wealthy. She first meets "Ivy" (Drew Barrymore), a poor but intelligent and highly trashy girl, at a local hangout where Ivy enjoyed rope-swinging from a tree. A young boy runs up and says, "Come on! A dog got hit!" Sylvie kneels next to the still breathing dog when all of a sudden Ivy crushes the dog's skull with a pipe (to put it out of its misery).
While sitting in the office for phoning in a bomb threat to a local TV station (that Sylvie's father works for) she sees Ivy walk in and begins to talk to her. Later that day, when Sylvie's father (Tom Skeritt) picks her up, Ivy asks for a ride. At first Darrel, Sylvie's father, is reluctant, but grudgingly compromises. Ivy tells Sylvie she gets car sick and asks to ride in the front (a ruse to get near Darrel, Ivy has a bit of a fetish for older men). Ivy puts her bare feet on the dashboard and allows her mini-skirt to shrug back onto her hip revealing her legs. Darrel takes notice.
A few weeks later, after Sylvie is no longer grounded, they meet again at the same hangout. They walk to Sylvie's house together, on the way Sylvie tells Ivy that Darrel is her adoptive father and that her biological father was black. She also says that she once tried to kill herself. Sylvie invites Ivy into her parent's mansion. They walk into the living room overlooking the San Fernando Valley. Ivy says that if she were to kill herself she'd like to fall. Sylvie's sickly mother, Georgie (Cheryl Ladd), walks in on their conversation, and it turns out that Sylvie was lying about her attempted suicide and her father. Georgie does not want Sylvie to be friends with Ivy initially, but Ivy later wins Georgia over by talking about her scholarship and helping her unblock her oxygen tank.
In a voice-over, Sylvie narrates that Georgie liked Ivy's energy and that her mother and stepfather enjoyed Ivy so much that Ivy had practically moved in. Over the next several weeks, Ivy and Sylvie sleep in the same bed and share clothes, but when Georgie offers to lend Ivy some of her clothes because of their similar figures, Ivy begins to wear the expensive clothes.
After a spat with her parents, Sylvie says she wants to do something to "make her parents cringe" and Ivy convinces her to get a tattoo so that "they can be like blood sisters".
A few days later, Darrel decides to throw a party at his house to try and improve his failing career, and he enlists Sylvie to help him. When Sylvie's boss at the charity center calls Ivy picks up the phone and tells him that Sylvie can work the night of the party, which allows Ivy to fill in. She straightens her hair and wears one of Georgie's dresses. That night, after the party, she dances in the kitchen and then begins to dance with Darrel. Georgie walks in on them and storms upstairs. While Georgie and Darrel are sitting together, Ivy walks in and tells Georgie that she is sorry. She claims that Darrel came into the kitchen to cry, and that she was only hugging him to make him feel better. Georgie believes her and accepts a glass of champagne from Ivy. She then falls unconscious because of the pills Ivy had put in the champagne beforehand. Ivy sits on the bed next to Georgie, and begins to massage Darrel with her foot while he kisses her legs.
Ivy appears to change over the next few days. She continues to straighten her hair and wears more and more of Georgie's clothing. Sylvie becomes increasingly irritated with Ivy and throws a fit when she finds Ivy with her dog in Georgie's sports car. She makes Fred (the dog) choose between her and Ivy. Ivy cheats and shakes the treats in her pockets while she calls Fred. That day, Sylvie skips school and tries to spend some time alone to sort things out in her head. Darrel picks Ivy up and they go out into the forest where Ivy gets Darrel drunk while they have sex. The next morning, Georgie plays a record that Sylvie made for her and walks out onto her balcony. Ivy walks up behind her and begins talking to Georgie. Then, without warning, Ivy pushes Georgie off the balcony and makes it look like a suicide (which Georgie regularly threatened).
A few weeks later, Sylvie washes Georgie's old sports car and Ivy walks up with the urn holding Georgie's remains. She suggests that they take a ride as a final goodbye to Georgie. While she's driving, Ivy begins to hum the song that Georgie was playing the morning Ivy pushed her. Sylvie confronts her and Ivy crashes the car to avoid answering. Sylvie is knocked out from a severe head injury. Ivy moves the unconcious Sylvie into the driver's seat to incriminate Sylvie.
In the hospital, Sylvie hallucinates that her mother is sitting in front of her. This inspires her to get back to her house in an attempt to save her father from Ivy. When she gets to her house, it is storming. She runs inside to get out of the rain, experiencing hallucinations all along the way because of her head injury. When she gets inside, she sees Darrel and Ivy having sex and flees the living room and runs outside.
Darrel goes to look for Sylvie and tells Ivy to stay inside. Ivy goes up to Georgie's old room and puts in the tape that was playing the morning Georgie died. She puts on Georgie's robe and walks out onto the balcony. Sylvie is sitting outside in the storm and sees the light and, due to her very serious head injury, believes that it is her mother on the balcony. She goes up to the room. Sylvie sees her mother turn around from the balcony.
Sylvie tells Georgie that she loves her and Georgie says she loves Sylvie too. They kiss, but then Sylvie comes out of her hallucination and sees that it is really Ivy. Sylvie attacks Ivy and they fight. The fight goes out onto the balcony and Sylvie pushes Ivy off her. Ivy goes off the balcony, but manages to keep from falling by holding on to Sylvie's necklace. The chain breaks and Ivy falls to her death, still clutching the necklace.
The film ends with Sylvie narrating that she still loves and misses Ivy, and that she forgives her because "she was even more alone than me".