It's Delft, Holland in the mid-17th century and 17-year-old Griet (SCARLETT JOHANSSON) has been sent by her parents (CHRIS MCHALLEM and GABRIELLE REIDY) to work as a maid to support their family. She ends up in the home of Johannes Vermeer (COLIN FIRTH), a master painter who mostly works for his wealthy patron, Van Ruijven (TOM WILKINSON).
Despite the constant work, things aren't peachy keen there. Johannes' wife, Catharina (ESSIE DAVIS), is constantly pregnant and jealous of her husband's work, while her mother, Maria Thins (JUDY PARFITT), keeps a tight fist on the family's purse strings. And her granddaughter, Cornelia (ALAKINA MANN), isn't pleased with Griet's arrival.
Nevertheless, and with the aid of fellow maid Tanneke (JOANNA SCANLAN), the young woman learns about her duties that include cleaning Johannes' studio. It's there that she becomes mesmerized by his work and he for her obvious eye for art. That doesn't sit well with Catharina. Despite the local butcher's son, Pieter (CILLIAN MURPHY), being sweet on Griet, Catharina senses something between her and Johannes.
From that point on, and as Johannes finds inspiration in Griet, their working together and his painting of her soon drives a wedge into the family that threatens to spell disaster.