Scene 1: A hall in Count Stankar's castle
Stiffelio, a minister, is expected to return from a mission. His wife Lina, her father Stankar, and her cousins Dorotea and Federico are waiting for him. In addition, there is Raffaele who, unknown to all, is Lina 's lover. Stiffelio arrives and recounts how the castle's boatman has told him the strange story of having seen a man and a woman escaping from a castle window and, as they did so, dropping a packet of letters, which Stiffelio now holds. Refusing to learn by opening the package who was involved, he throws the letters into the fire, much to the relief of Lina and Raffaele. Secretly, Raffaele communicates to Lina that he will leave instructions as where they may next meet inside a locked volume in the library.
After he has been greeted by friends, Lina and Stiffelio are left alone (Non ha per me un acento - "She has no word for me, not a glance"). He tells her of the sin he has witnessed (Vidi dovunque gemere - "Everywhere I saw virtue groan beneath the oppressor's yoke") and then notices that her wedding ring is not on her finger. Angrily, he demands to know why (Ah v'appare in fronte scritto - "Ah, clearly written on your brow is the shame that wages war in your heart"), but Stankar arrives to escort him to the celebrations being arranged by his friends. Alone, Lina is filled with remorse (A te ascenda, O Dio clemente - "Let my sighs and tears ascend to thee, O merciful God").
Scene 2: The same, later
Deciding to write a confession to Stiffelio, Lina begins to write, but her father enters and grabs the letter, which he reads aloud. Stankar rebukes her (Dite che il fallo a tergere - "Tell him that your heart lacks the strength to wash away your sins", but is determined to preserve family honor and cover up his daughter's behavior (Ed io pure in faccia agli uomoni - "So before the face of mankind I must stifle my anger"). In their duet, father and daughter come to some resolve (O meco venite - "Come now with me; tears are of no consequence") and they leave.
Now Raffaele enters to place the note in the volume, which has been agreed to. Jorg, the elderly preacher, observes this just as Federico arrives to take the volume away. Jorg's suspicions fall upon Federico and he shares what he knows with Stiffelio. Seeing the volume and realizing that it is locked, he is told that Lina has a key. She is summoned, but when she refuses to unlock it, Stiffelio grabs it and breaks it open. The incriminating letter falls out, but it is quickly taken up by Stankar and torn into many pieces, much to the fury of Stiffelio.
A graveyard near the castle
Lina has gone to her mother's grave at the cemetery to pray (Ah dagli scanni eternei - "Ah, from among the ethereal thrones, where, blessed, you take your seat"), but Raffaele joins her. She immediately asks him to leave. He laments her rejection (Lina, Lina! Perder dunquevoi volete - "Lina, then you wish to destroy this unhappy, betrayed wretch" and refuses to go (Io resto - "I stay"). Stankar arrives, demands that his daughter leave, and then challenges Raffaele to a duel. Stiffelio arrives, and announces that no fighting can take place in a cemetery. There is an attempt at conciliation whereby the priest takes Stankar's hand and then Raffaelo's, joining them together. However, Stankar reveals that Stiffelio has touched the hand of the man who betrayed him! Not quite understanding at first, Stiffelio demands that the mystery be solved. As Lina returns demanding her husband's forgiveness, Stiffelio begins to comprehend the situation (Ah, no! E impossibile - "It cannot be! Tell me at least that it is a lie"). Demanding an explanation, he challenges Raffaelo to fight but, as he is about to strike the younger man, Jorg arrives to summon the priest to the church from which the sound of the waiting congregation can be heard. Filled with conflicting emotions, Stiffelio drops his sword, asks God to inspire his speech to his parishioners, but, at the same time, curses his wife.
Scene 1: A room in Count Stankar's Castle
Alone in his room, Stankar reads a letter which tells him that Raffaele has fled and that he seeks to have Lina join him. He is in despair over his daughter's behaviour (Lina pensai che un angelo in te mi desse il cielo - "Lina, I thought that in you an angel brought me heavenly bliss"). For a moment, he resolves to commit suicide and begins to write a letter to Stiffelio. But Jorg enters to give him the news that he has tracked down Raffaele who will be returning to the castle. Stankar rejoices (O gioia inesprimibile, che questo core inondi! - "Oh, the inexpressible joy that floods this heart of mine!"), as he sees revenge being within reach. He leaves.
Stiffelio confronts Raffaele and asks him what he would do if Lina were free, offering him a choice between "a guilty freedom" and "the future of the woman you have destroyed". The younger man does not respond, and the priest tells him to listen to his encounter with Lina from the other room. Stiffelio lays out the reason that their marriage can be annulled (Opposto è il calle che in avvenire - "Opposite are the paths that in future our lives will follow"). Lina's reaction, when presented with the divorce decree, is to swear an on-going love for her husband ("I will die for love of you"). Appealing to Stiffelio more as a priest than as a husband, Lina confesses that she has always loved him and she still does. Stankar enters to announce that Raffaele is dead and Jorg tries to convince Stiffelio to come to the church service (Ah si, voliamo al tempio - "Ah, yes, let us flee to the church").
Scene 2: A church
In the church, Stiffelio mounts the pulpit and opens the Bible to the story of the adulterous woman (John 7:53-8:11. As he reads the words of forgiveness (perdonata) he looks at Lina and it is clear that she too is forgiven.