Last time on Gotham, Jerome Valeska (Cameron Monoghan) encouraged mayhem in the city as the lights went out and the crazies followed. He went after Bruce (David Mazouz), taking him to a bloody carnival. Bruce managed to get in a bunch of punches, and then Jim (Ben McKenzie) punched his face off, literally. Bruce vowed, “I will not kill,” because he’s Batman. Jim’s Uncle Frank (James Remar) was in the Court of Owls, who were training the doppelgänger. After toying with his love the entire episode, Nygma (Cory Michael Smith) shot Penguin (Robin Lord Taylor) and pushed him into the harbor.

Last week on Gotham, Jerome Valeska (Cameron Monaghan) was finally revived sans face, after the GCPD chased his face-wearing resurrector around the city. He and Lee (Morena Baccharin) had a cackling conversation about what he’s missed since his death. Barbara and Tabitha (Erin Richards, Jessica Lucas) took out the rest of the heads of the families, as they went further in their “Operation Destroy Penguin” (Robin Lord Taylor) plan. Selina’s mom betrayed her, and she and Bruce (Camren Bicondova, David Mazouz) are on the outs because he knew it. Jerome went on TV and urged everyone to commit crimes. The lights went out in Gotham, as Jim (Ben McKenzie) watched, horrified.

Last week on Gotham, Falcone (John Doman) put a hit out on Jim Gordon (Ben McKenzie), and Zsasz (Anthony Carrigan) was a ton of fun while doing it. In the midst of that, Bullock (Donal Logue) and Gordon found Jerome Valeska (Cameron Monaghan) worshippers. Ed, Barbara, and Tabitha (Cory Michael Smith, Erin Richards, Jessica Lucas) went forward with the plan to destroy Penguin (Robin Lord Taylor), with visions of his dead father, causing him to kill a staff member. Selina (Camren Bicondova) and her mom reunited. Lee (Morena Baccharin) made Falcone call off the hit.

Last time on Gotham, Jim gave Lee (Ben McKenzie, Morena Baccharin) a really unfair last minute declaration of love, which she did not accept. Mario played with Jim, winning… until his blood test came back positive with the virus. Jim promised Falcone (John Doman) he would not kill Mario, but that promise was broken. Barbara told Nygma (Cory Michael Smith) of Penguin’s (Robin Lord Taylor) murder motive, so he went to her, Butch, and Tabitha (Erin Richards, Drew Powell, Jessica Lucas) to team up against Penguin (after apologizing for the maiming of course). Selina’s mom showed up in time to save her, Bruce and Alfred (David Mazouz, Sean Pertwee) from a sticky and dire situation.

Last week on Gotham, someone put out a hit on Mario (James Carpinello), and Jim (Ben McKenzie) saved him twice, but not before seeing that something was not quite right with him. Bruce (David Mazouz) found The Whisper Gang who are rebelling against the Court of Owls, and decided to join them. Nygma (Cory Michael Smith), convinced that Butch (Drew Powell) had Isabella (Chelsea Spack) killed, gave Tabitha (Jessica Lucas) an impossible choice: lose her hand or let Butch die. Butch gave a sweet speech and she sacrificed her hand. Nygma realized too late that he had the wrong guy. Barbara (Erin Richards) figured out the real culprit.

Last week on Gotham, we saw Captain Barnes (Michael Chiklis) go completely to the dark side on Alice Tetch’s “crazy” blood, but not before trying to recruit Jim (Ben McKenzie) on his dark vigilante kick. When that didn’t work, he tried to frame him for a murder. When that didn’t work he tried to kill him, but Bullock (Donal Logue) got to him just in time, thanks to Lee (Morena Baccharin). Bruce, Ivy, and Selina (David Mazouz, Maggie Geha, Camren Bicondova) get caught up in something quite deadly. Nygma (Cory Michael Smith) thought he knew who killed Isabella (Chelsea Spack).

Last week on Gotham, Lee’s (Morena Baccharin) engagement party ended how every single party in Gotham ends – in bloodshed. This time, it was the GCPD that was to blame. Captain Barnes (Michael Chiklis) did catch a sleazy doctor who cut off people’s faces for money, but managed to control himself and turn him in. Of course the guy was released, and that sent Barnes off, causing him to beat up and toss the guy out the window. The doctor named Barnes as the killer to Jim Gordon (Ben McKenzie) before he died. Penguin (Robin Lord Taylor) had Isabella (Chelsea Spack) killed, when he failed to break her and Nygma (Cory Michael Smith) up by scaring her off.

Last week’sGotham, was psychedelic as Jervis Tetch (Benedict Samuel) dosed Jim Gordon (Ben McKenzie) with a hallucinatory drug, and the ride was as weird as expected. Barbara (Erin Richards) was his host and he visited several rooms in his mind – one of Penguin (Robin Lord Taylor), one of a happy family life with Lee (Morena Baccharin), and then one with his dad, who seems alive and evil now. Ed and Isabella are in love, even after she knows the whole murdering Ms. Kringle story. Bruce and Selina (David Mazouz and Camren Bicondova) had a date. Barnes (Michael Chiklis) started losing it more because of the blood.

Last week on Gotham, after playing a random “death choice” game, Jim (Ben McKenzie) was faced with an even worse choice, as the Mad Hatter (Benedict Samuel) kidnapped both Lee and Valerie Vale (Morena Baccharin and Jamie Chung), forcing him to choose one to die. Jim’s choice was tricky and telling. Penguin (Robin Lord Taylor) tried to work up the courage to confess his growing feelings for Ed (Cory Michael Smith, but didn’t manage it. Then Nygma met his soul mate – who is the spitting image of Kringle (Chelsea Spack). The effects of Alice Tetch’s blood on Captain Barnes (Michael Chiklis) grew stronger.

Last week on Gotham, Penguin (Robin Lord Taylor) reveled in his victory, and was quite the public figure, until a red-hooded gang broke his mother’s statue, and threatened his rep as mayor. Tabitha and Barbara (Jessica Lucaas and Erin Richards) figured out real quick who the culprit was – Butch (Drew Powell). He was only trying to get back into Penguin’s good graces, by faking the gang and then playing hero. It almost worked, but Nygma (Cory Michael Smith) exposed the plan. Butch was arrested, but Tabitha broke him out. Penguin and Nygma share a moment. Selina (Camren Bicondova) initiated a kiss with the real Bruce (David Mazouz), totally confusing him.