Villette begins with its famously passive and secretive protagonist, Lucy Snowe, age 14, observing her godmother, Mrs. Bretton, her son, Graham Bretton, and a young visitor, Paulina Home, known to everyone as "Polly." The child is a peculiar little thing and soon develops a deep devotion for the older Graham, who showers her with attention until her stay is cut short when her father comes to take her away. In the ensuing years, an unspecified family tragedy forces Lucy into action, causing her to seek employment, and at age 23 she boards a ship for "Labassecour" (French for 'farmyard' and based on Belgium) despite not speaking a word of French on a hope that maybe she may find something in a new place. After arriving in the capital city of Villette, Lucy finds work as a teacher at Mme. Beck's boarding school for girls (which can be seen as a literary representation of the Hégers' Brussels pensionnat), and thrives despite Mme. Beck's constant surveillance of the students and staff.
Dr. John, a handsome English doctor, frequently visits the school because of his love for the heartless coquette Ginevra. In one of Villette’s famous plot twists, Dr. John is later revealed to be Graham Bretton, a fact that Lucy has known but deliberately concealed from the reader. After Dr. John discovers Ginevra's unworthiness, his brotherly instincts turn his attention to Lucy, and they become close friends which she values very highly despite her usual emotional reserve. We meet "Polly" again at this point (although her father has come into the title de Bassompierre which makes her now Paulina Home de Bassompierre) when Dr. Bretton saves her from being trodden upon at the theater one night. They soon discover that they know each other and renew their friendship, which quickly blossoms into something more. The two fall in love and eventually marry, which Lucy has long seen coming, and she understands without sharing their facile happiness.
At the same time, Lucy has the first of several encounters with a shadowy nun in the attic who may be the ghost of a nun buried alive on the grounds for breaking her vows of chastity; in a highly symbolic scene, she finally finds the nun's habit in her bed and destroys it. She later discovers it to be the disguise of Ginevra's amour, de Hamal.
Lucy finds herself becoming closer to a colleague, the autocratic, fiery schoolmaster M. Paul Emanuel; the two eventually fall in love. However, a group of conspiring antagonists, including Mme. Beck, the priest Père Silas, and the relatives of M. Paul's long-dead fiancée, struggle to keep the two apart, and finally succeed in forcing M. Paul's departure for the West Indies to oversee his plantation there. He nonetheless declares his love for Lucy before his departure, and arranges for her to live independently as the headmistress of her own day school or externat, which she later expands into a pensionnat. Villette’s final pages are ambiguous; though Lucy says that she wants to leave the reader free to imagine a happy ending, she hints strongly that M. Paul's ship was destroyed by a storm on his return from the West Indies, killing him. She claims, for example, that "the three happiest years of [her] life" were those before M. Paul's return journey, which would suggest that he did indeed fall victim to the "destroying angel of tempest". Brontë described the ambiguity in the ending as a "little puzzle".