Une novice nommée Viridiana (Silvia Pinal) est sur le point de prononcer ses vœux lorsque son seul parent vivant, son oncle Don Jaime (Fernando Rey), l’invite à lui rendre visite. Elle ne l’a rencontré qu’une fois et hésite à accepter. Sa mère supérieure fait pression sur elle pour qu’elle accepte.
Don Jaime est un reclus vivant dans une ferme négligée avec quelques domestiques : Ramona (Margarita Lozano), sa fille Rita, et Moncho. Lorsque Don Jaime voit sa nièce, il est frappé par sa forte ressemblance avec sa défunte épouse.
Lors de sa dernière nuit, Viridiana, reconnaissante du soutien financier de longue date de son oncle, se plie à contrecœur à sa demande étrange de revêtir la robe de mariée de sa femme. Lorsque Ramona l’informe que Don Jaime veut l’épouser, elle est atterrée, et son oncle semble abandonner l’idée. Ramona drogue secrètement la boisson de Viridiana et Don Jaime porte la jeune fille inconsciente dans sa chambre avec l’intention de la violer, mais au dernier moment il s’arrête. Cependant, le lendemain matin, il lui ment et lui dit qu’il a « pris sa virginité », afin qu’elle ne puisse pas retourner à son couvent. Lorsqu’elle insiste pour qu’elle y retourne, il avoue qu’il a menti, la laissant dans l’incertitude sur ce qui s’est passé.
À l’arrêt de bus, les autorités l’empêchent de partir. Son oncle s’est pendu, lui laissant ses biens à elle et à son fils illégitime Jorge (Francisco Rabal). Profondément perturbée, Viridiana décide de ne pas retourner au couvent. Au lieu de cela, elle recueille quelques mendiants et les installe dans une dépendance. Elle se consacre à les nourrir et à les éduquer moralement. Dégoûté, Moncho s’en va. Jorge s’installe dans la maison avec sa petite amie Lucia et commence à rénover l’endroit délabré. Lucia, sentant qu’il convoite Viridiana comme son père, part. Jorge fait alors des avances à la volontaire Ramona.
Lorsque Viridiana et Jorge s’absentent quelques jours pour s’occuper de certaines affaires, les indigents s’introduisent dans la maison. Au début, ils veulent juste jeter un coup d’œil, mais devant une telle abondance, ils dégénèrent en une bande d’ivrognes et d’émeutiers et font la fête sur les airs du Messie de Haendel. Les mendiants posent autour de la table pour une photo où ils ressemblent aux personnages de la Cène de Vinci.
Les propriétaires légitimes reviennent plus tôt que prévu et trouvent la maison en désordre. Les mécréants s’excusent un par un et partent. Jorge confronte l’un d’eux, qui sort un couteau. Un autre mendiant lui frappe la tête avec une bouteille, l’assommant. Viridiana entre dans la pièce et s’empresse d’aider Jorge qui est allongé sur le sol. Le premier homme la saisit. Alors que Viridiana résiste à l’agression sexuelle, Jorge reprend conscience. Il a été ligoté, mais parvient à soudoyer un mendiant pour qu’il tue le violeur en puissance. La police arrive enfin.
Viridiana est une femme changée et la jeune Rita brûle sa couronne d’épines. Portant ses cheveux détachés, Viridiana frappe à la porte de Jorge, mais trouve Ramona avec lui dans sa chambre. Alors qu’Ashley Beaumont chante « Shimmy Doll » sur le tourne-disque, Jorge dit à Viridiana qu’ils ne faisaient que jouer aux cartes et l’incite à les rejoindre : « Tu sais, la première fois que je t’ai vue, je me suis dit que ma cousine et moi finirions par battre le jeu ensemble. »
Finale censuréeModification
Le conseil de censure espagnol a rejeté la fin originale du film, qui représentait Viridiana entrant dans la chambre de son cousin et fermant lentement la porte derrière elle. Par conséquent, une nouvelle fin a été écrite ; celle-ci s’est avérée plus suggestive que la première, car elle impliquait un ménage à trois entre Ramona, Jorge et Viridiana.