Ten-year-old Chihiro Ogino and her parents are traveling to their new home when her father takes a wrong turn. They unknowingly enter a magical world that Chihiro's father insists on exploring. While Chihiro's parents eat like pigs at an empty restaurant stall, Chihiro finds an exquisite bathhouse. She meets a young boy, Haku, who warns her to return across the river before sunset. However, Chihiro discovers too late that her parents have turned into actual pigs and she is unable to cross the flooded river, becoming trapped in the spirit world.
After finding Chihiro, Haku has her ask for a job from the bathhouse's boiler-man, Kamaji, a spider yōkai commanding the susuwatari. Kamaji and the worker Lin send Chihiro to the witch Yubaba, who runs the bathhouse. Yubaba gives Chihiro a job but renames her Sen (千?). While visiting her parents' pigpen, Sen finds a goodbye card addressed to Chihiro and realizes that she has already forgotten her name. Haku warns her that Yubaba controls people by taking their names and that if she forgets hers like he has forgotten his, she will not be able to leave the spirit world. While working, Sen invites a silent masked creature named No-Face inside, believing him to be a customer. A 'stink spirit' arrives and is Sen's first customer. She discovers he is the spirit of a polluted river. In gratitude for cleaning him, he gives Sen a magic emetic dumpling. Meanwhile No-Face tempts a worker with gold, then swallows him. He demands food and begins tipping extensively. As the workers swarm him hoping to be tipped, he swallows yet another two greedy workers.
Sen discovers paper shikigami attacking a dragon and recognizes the dragon as Haku transformed. When a grievously-injured Haku crashes into Yubaba's penthouse, Sen follows him upstairs. When she reaches Haku, a shikigami that stowed away on her back transforms into Zeniba, Yubaba's twin sister. She transforms Yubaba's baby son Boh into a mouse, creates a decoy baby and turns Yubaba's bird creature into a tiny bird. Zeniba tells Sen that Haku has stolen a magic gold seal from her, and warns Sen that it carries a deadly curse. After Haku dives to the boiler room with Sen and Boh on his back, she feeds him part of the dumpling, causing him to vomit both the seal and a black slug, which Sen crushes with her foot.
With Haku unconscious, Sen resolves to return the seal and apologize for Haku. Before she leaves the bathhouse, Sen confronts No-Face, who is now massive, and feeds him the rest of the dumpling. Vomiting, No-Face chases Sen out of the bathhouse before returning to his normal size. Sen, No-Face, and Boh travel to see Zeniba. Enraged at the damage caused by No-Face, Yubaba blames Sen for inviting him in and orders that her parents be slaughtered. After Haku reveals that Boh is missing, he promises to retrieve Boh in exchange for Yubaba freeing Sen and her parents.
Sen, No-Face, and Boh arrive at Zeniba's house. Zeniba, now the benevolent "Granny," reveals that Sen's love for Haku broke her curse, and that Yubaba had used the black slug to control Haku. Haku appears in his dragon form and flies both Sen and Boh back to the bathhouse. No-Face unexpectedly shows itself as a very good spinner for Zeniba and accepts her proposal to stay as worker. On the way back, Sen recalls a memory from her youth in which she had fallen into the Kohaku River but was washed safely ashore. After correctly guessing that Haku is the spirit of the Kohaku River (and thus revealing his real name), Haku is completely freed from Yubaba's control. When they arrive at the bathhouse, Yubaba tells Sen that in order to break the curse on her parents, she must identify them from among a group of pigs. After Sen correctly states that none of the pigs are her parents, she is given back her real name Chihiro. Haku takes Chihiro to the now dry riverbed and vows to meet her again. Chihiro crosses the river and reunites with her restored parents, who do not remember what happened. They walk back to their car and drive off.