When Mara Cecova, the arrogant and ill-tempered star of an avant-garde production of the Verdi opera of Macbeth, is injured after getting hit by a car outside the theater after arguing and insulting the director and theater people, Cecova's young understudy, Betty, is informed of the incident and is given the coveted role of Lady Macbeth. In spite of her initial sense of foreboding, Betty is an instant success with her performance.
However, an anonymous opera buff finds his way into the opera house on the opening night, watching Betty's performance from an empty box. When a meddlesome stagehand finds him watching and orders him to leave, the unseen fan murders the stagehand by impaling him to a coat-hook.
After the show, Betty's boyfriend, Stefan, shows up in her dressing room to congratulate her and invites her back to his apartment for some intimate time. Afterwards, while Stefan gets up out of bed to make some tea for Betty and himself, the unseen killer breaks into the apartment where he attacks and overpowers Betty, ties her to a pillar, and forces her to watch him kill Stefan when he returns to the bedroom by stabbing him to death. The killer tapes a row of needles beneath each of her eyes so she won't shut them while he makes her watch. Afterwards, the hooded, masked killer unties Betty and then flees.
Disturbed by a half-hidden childhood recollection of the same hooded killer murdering her own mother several years earlier, Betty chooses not to go to the police and instead confides in Marco, the director of Macbeth, about the incident and that the killer may know her.
The next day, Inspector Alan Santini arrives at the opera house where he questions the staff about Stefan's murder as well as probes an apparent connected attack on the troubled production's pet ravens when three of them were found dead after the show. Betty arrives at the opera house for rehearsals, but choosing to avoid Inspector Santini, hides out in her dressing room where she calls her agent, the motherly Mira, for advice on what to do about this.
Later that day, Betty meets with the wardrobe seamstress Giulia when her costume is found slashed to pieces. While Giulia fixes the dress, she finds a gold bracelet sewn onto it. While Betty and Giulia try to find what the faded words on the bracelet say, the killer arrives and again ties up Betty, taping needles under her eyes while he attacks Giulia to retrieve the bracelet. But Giulia puts up a fight, knocking the killer down to the floor with an iron. But Giulia makes the mistake of removing the killer's mask, which results in the unseen killer stabbing her to death. When Giulia, with her dying breath, inadvertently swallows the bracelet, the killer has to cut into her throat with scissors to retrieve it. He puts his mask back on and again unties Betty before fleeing.
When Betty flees to her apartment, she is met in the lobby by Inspector Santini and tells him about the latest murder and that the killer may be after her. Santini promises to send Betty a detective to keep guard over her. A little later, while Betty struggles with her vision after applying eye drops, a man identifying himself as Inspector Soavie arrives to look after her. Some time later, Mira arrives and tells Betty that she talked with a man in the lobby claiming to be Inspector Soavie. Unsure of which one is the imposter, Betty and Mira hide while the figure claiming to be Soavie receives a phone call and leaves the apartment. While Betty tries to call the police, Mira hears a knock on the front door.Mira demands the visitor identify himself, and is not convinced when he shows police ID and a gun. As she looks the peep hole, she gets shot through the peep hole by the killer trying to gain access into the apartment. Betty is forced to hide as the killer breaks in, and she comes across the real Inspector Soavie who stumbles into the apartment after being fatally stabbed. After a game of cat-and-mouse in the apartment with the half-blind Betty trading gunshots at the hooded killer with Soavie's gun, she escapes through a ventilation shaft when a little neighbor girl helps her escape into her apartment down the hallway. The little girl's abusive single mother arrives home where she yells at the little girl for having company over and tells Betty to leave.
Betty returns to the opera house and meets with Marco. He tells her that he has a plan to entrap the killer, while Betty begins to think about a further connection to the killer and her long-dead mother whom was also abusive towards her.
The following night, Betty once again takes the stage as Lady Macbeth, but her performance is interrupted when Marco unleashes a flock of vengeful ravens into the audience. Recognizing the face of their attacker from the previous night, the birds swoop down on him sitting in the audience, gouging out one of his eyes. The murderer, whom is revealed to be Inspector Santini, attempts to shoot at Betty on stage, but she evades the bullets, while Santini evades capture, and subsequently pounces on Betty as she is recovering in her dressing room.
Dragging her to a far-flung corner of the building, he reveals to her the motive behind his persecution of her: Santini was once her mother's young teenage lover, cruelly murdering young women at Betty's mother's behest, by tying them up and staging the killings in front of her. But when Betty's psycho mother became increasingly greedy for sado-sexual thrills of the murders, Santini murdered her too, while Betty witnessed the event from behind a partly open door. Now, many years later, Santini's desire to kill has been rekindled by Betty's appearance, which he sees as her mother's reincarnation. Blindfolding Betty and tying her to a chair, Santini stages his own death by setting fire to the room and apparently himself. Betty manages to break free and escapes from the blaze to be comforted by Marco.
Betty and Marco leave Rome, traveling to the Swiss Alps to a house that Marco owns so she can recuperate. However, when he hears a radio broadcast that the man though to have been burned alive was Santini was in fact a clothed mannequin, Marco yells for Betty to run away. Santini shows up at the house to finish what he started and urders the housekeeper. Betty flees into the nearby woods with Santini in pursuit. Marco takes on the murderous policeman only to get stabbed to death. Betty then distracts Santini by coming onto him long enough to bash him on the head with a rock, and he is then set upon and dragged away by the police. With her nightmare experience finally over, Betty wanders though an empty meadow to find solace in nature. There, Betty finds an ugly lizard trapped in the grass and releases it, telling it to "go free".