Wes's killer is finally revealed...
Credit: ABC/Richard Cartwright

Welp, now we know. After all that theorizing and predicting and scorecard keeping… we should’ve just tossed any suspect lists right out the window from the start because there’s no way anyone saw that one coming.

And hell’s bells, it was wrong to even think there’d be just one big Wes-related shocker coming at us tonight. So let’s all pick up our jaws and try to walk through what just happened tonight on the two-hour season 3 finale of How to Get Away With Murder. (And be sure to check out EW’s chats with Karla Souza, who plays Laurel, and executive producer Pete Nowalk for more scoop.)

The episode begins with Connor struggling to reconcile his emotions with what’s going on in the investigation. Just as Annalise is suffering through the words of the guilty (and guiltless) at an Alcoholics Anonymous meeting whose “mistakes” have cost them peace of mind forevermore, Connor is beginning to feel like maybe now’s a good time for his own story to end. “It’s just enough to make me want to die,” says one of the people at the AA meeting, as Connor comes but inches from stepping in front of a bus and ending his own life. So, right out of the gate, we know that Connor’s presence the night of Wes’ death has given him some kind of cross to bear — but what?

Oliver swears he believes Connor about the reason for his concealment, but Connor doesn’t quite buy that he’s innocent of Wes’ death. In trying to resuscitate him that night, he heard the crack of a rib. Did he puncture Wes’ lung or pierce his heart in the process of trying to save him? (Remember, guys, these are law students, not med students.)

Bonnie’s entire house has turned into a pressure cooker wherein everyone’s boiling over with questions and accusations, and all she wants to do is herd these cats to the courtroom so they can look like they stand in solidarity with Annalise on her motion to dismiss right now. It’s a fool’s errand, really, but given everything Atwood did to move and destroy Wes’ body (meaning, evidence), it’s worth a try.

On the stand, Atwood’s not budging in her insistence that she didn’t order the cremation, which convinces some of the Keating kids, but the fact that Charles Mahoney has just been released from jail and his mom’s still demanding justice for her husband’s murder does nothing to assuage anyone. Annalise wants to press Atwood a little more, and she knows just the guy to do it.

Nate might be playing it coy with Denver about why he’s been so interested in Annalise’s motion hearing, but we know where his loyalties really lie. Nate meets with Annalise to give her Atwood’s wifi password, which is basically unbridled access to her computer for Oliver to rifle through. While Ollie does some digging and comes up with a blocked number Atwood dialed the night of Wes’ murder (and the subsequent relocation of his body), Connor finally decides to confide in Michaela about why he’s so upset right now. He just picked exactly the wrong person to spill the beans to.

It takes about, oh, three seconds for her to tell the group that he’s harboring a dirty secret.

NEXT: Connor confesses

In a flashback to “that night,” we see Connor checking his voicemail from his Humper buddy’s phone. Following her instructions, he goes to the house and finds Wes on the floor of the basement not breathing and, as far as he can tell, without a pulse. But Wes’ body is still warm, so Connor does his damnedest to revive the guy, and that’s when he notices the gas leak and open flame and makes way from the basement to safety.

Laurel thinks he’s full of it — why would he wait this long to share this crucial bit of information? She even gets extra cruel and suggests that Connor finish his plan to go step in front of a bus, essentially. Seeing his weakened state, Annalise decides to go in for the kill and throws all her emotional noodles at the wall, calling Connor a broken boy who has lost the ability to trust and whatnot. But that only fires him up even more, and he hits her in the gut with this: “All your sons are dead. They’re all dead. And you can’t use me to replace them.” OUCH, these two. There’s no middle ground here, so they both agree to trust each other’s innocence instead. This certainly awakens Connor from his proverbial funk enough to see the bigger picture again.

Meanwhile, Frank’s being leaned on by Denver. Denver wants Frank to take a deal to say that Annalise ordered him to kill Wes in exchange for a sentence of seven years. If he doesn’t cooperate, he’ll have to face the charges for Wes’ murder all by his lonesome, which means life in prison… or worse. But they could offer Frank walking shoes at this point, and he wouldn’t take them if it meant turning on Annalise. Connor was wrong; she still has one son in her charge right now, and it’s Frank. Just to be on the safe side, though, Frank consults with Bonnie, who tells him that Denver’s totally bluffing and Frank should stay far, far away from anything he’s offering right now.

Laurel, who has some thinking to do anyway, goes to her OB appointment and takes a listen to her baby’s heartbeat. She’s still undecided about whether to keep Wes’s unborn, but she’s at least feeling well enough to apologize to Nurse Meggie for treating her so poorly.

Back at the house, Asher just wants to dial up the mystery line and see who answers, but Annalise doesn’t want to play that card this early in the game. Connor offers instead to take the stand and reveal the broken rib information so it can invalidate the autopsy report and help get Annalise’s motion through, but that might incriminate him, so Annalise suggests Laurel do it instead.

Laurel’s still not hot on helping Connor out with anything, but she does agree to it. Problem is, Laurel’s got a history of perjuring herself — she once “fabricated” a story about being kidnapped, the court reveals, which makes her testimony basically worthless right now. Womp womp. Turns out, she recanted her own statement back in the day to protect her father somehow, but still. She’s totally embarrassed on the stand by Denver, who, hilariously, had her as a star witness for his own case before she decided to pitch in for the home team. Annnd with that, the motion is denied and it’s on to a jury trial we go… or is it?

NEXT: Connor makes a big discovery

Connor decides to take matters into his own hands, and he goes to Denver’s office to take up Wes’ old immunity deal. He wants to tell Denver the truth — that he was actually the one who found Wes’ body that night — but before he can get the words out, Asher decides to call the mystery line and… yep. It’s ringing right there in Denver’s drawer. He’s got the burner phone, which means he was definitely involved in the riddance of Wes’ body, if not more.

Denver walks in on Connor and this new bit of evidence, and that’s when we get another flashback to a mystery guy observing the explosion as Connor runs away that night — telling whoever’s on the other line that things just got “messy.”

We journey back a few moments further to exonerate Nate, who hears Wes out as he confesses to doing awful things to Annalise. Nate did leave when he said he did, and he was decidedly not the one who took Wes out. He left him there unharmed, just as he said: After Wes leaves Annalise a voicemail we only hear part of, he’s attacked from behind. Bits and pieces, guys. Bits and pieces.

Connor evidently does not go ham in Denver’s office and attract some protective attention from the countless people working there before he’s stowed away in a remote basement. Pity, that. So, he’s officially MIA where everyone else, especially poor Oliver, is concerned. And no one at the police station is being especially helpful in putting together a missing person’s case right now, either. Asher and Bonnie manage to finagle a face-to-face confrontation with Denver in the men’s room — the perfect place for him to utter the zinger, “You know a pissing contest is just a metaphor, right?” and then deny knowing anything about Connor’s whereabouts.

At the same time, Annalise decides to do a little confronting of her own. She has a sit-down with Sylvia Mahoney in which she tells her, without mincing her words, that she believes the woman executed Wes out of spite for him being her husband’s bastard son. But Sylvia denies that and denies being responsible for her stillborn son’s death. She says it’s actually Charles who fathered Wes and that she believes Annalise was responsible for framing him for her husband’s death. Whether it’s the sparkling water or the palpable tension that erupts in the room — poor Carly the waitress gets the unkind shove-off treatment throughout all this — Annalise actually believes her.

NEXT: Annalise sacrifices Wes for the greater good

As it turns out, Denver’s not all that great at torture tactics. His best effort to lean on Connor involves teasing him with a sandwich and leaving him alone to his thoughts with an immunity deal on his desk — he blows that away in both the literal and figurative senses.

Annalise, unsure if she’s just been had by Sylvia or if she really believes this woman she thought was a monster for so many years (and yeah, she’s still a monster, no matter what her official kill count is), goes back to her burned-down house and looks for the one thing we all know she hoped would survive the flames: the one picture of her long-lost baby that exists in this world. There’s a little charring on Sam’s portion (again with the metaphors here), but otherwise, the image is somehow miraculously intact. How this leads to her deciding to pin all the known murders on Wes himself, I don’t know, but that’s that catalyst that got her from Point A to Point B.

While Michaela’s caught in a tug-of-war over Asher’s sudden revelation that he loves her — dude, TIMING — Laurel is now confronted with the possibility that she’ll have to go along with blaming Wes for the deaths of Sam and Rebecca just to save her own skin, because Connor just flipped and told the police that Oliver has a copy of Annalise’s phone on his computer.

To his credit, the mystery man from the crime scene did hijack his phone and turn it over to Denver, who can now place him at the scene of Wes’ murder and charge him with the crime. And besides, maybe he thought the phone thing was a false lead anyway?

Whether he knows it or not, what the police will eventually find is a deleted but cached voicemail from Wes declaring, “I was at the police station. They found Rebecca’s body. They’re saying you did it. All of it. Even Sam. You can’t go down for what I did. There’s no way I could live with myself so please come home.” Annalise knows this implicates Wes fully and unequivocally, so she has no choice right now but to use that last bit of leverage to her advantage.

Laurel hates the idea of letting Wes rot with this reputation hanging over his grave, but majority rules, so that’s what’s happening whether she likes it or not. But she’s got her own back-up plan in mind because she hungers for revenge (not the Cheetos and pizza slices Asher’s been carelessly hanging over her head that make her want to barf).

While Annalise makes a deal with the devil, a.k.a. Denver — who already knows that Nate’s compiled a stack of evidence that he’s corrupt, to boot — Laurel decides to confront Charles using the only tool she has at her disposal right now: Michaela’s flirtation skills. And it’s hook, line, and sinker, too, because Charles very quickly invites Michaela back to his place. Asher doesn’t want her to go — he’s a rapist and a potential murderer, after all — but Laurel’s not taking no for an answer.

With this new piece of voicemail evidence, Denver successfully makes his case to the judge as to why he wants to drop the charges against Annalise. Their official story is that Wes killed himself that night out of guilt for his crimes, and Nate stands by his side, his job presumably restored.

But Laurel decides to take matters into her own hands. She’s got a pistol in her pocket, and she’s not afraid to use it.

As she makes way to take down Charles on the street, she’s intercepted by someone she used to know: Dominic. This is the man who killed Wes, brutally, by incapacitating him with an injection and then suffocating him in Annalise’s foyer before burning the place to bits. And that call he made about things getting messy? It wasn’t to Denver after all; it was to Laurel’s father. It wasn’t Connor running away that prompted the call, it was Laurel’s arrival. Laurel’s father ordered this hit, guys. And we have to assume his motive is that he doesn’t take kindly to boys making babies with his daughter? What the WHAT.

Dominic’s interruption sets Charles free and keeps Laurel out of jail in the process, but justice is far from done. On the bright side, all the stress of Connor’s kidnapping makes him ready to make babies and get married once Annalise springs him from Denver’s dungeon, so we might get an Oliver-Connor wedding in season 4. Happy dance?

Yeah, there’s not much time for that, guys, because we’ve got to unpack Annalise’s emotional reaction to all of this first. She might have spent her last meeting hating on the process of spilling guts at AA meetings to feel better, but she does just that as she walks through the terrible grief she’s experiencing over the loss of Wes. She sobs as she tells the group that she couldn’t stay away from Wes since he was a kid because “he wasn’t just a stranger. He was — he felt like my son… He was my son, and he’s gone.”

Some might take that to mean that she didn’t actually have a stillborn baby, but we know that’s not true… don’t we? Up ’til now, we’ve been led to believe that Wes was Rose’s son and what Annalise felt for him was instead an adoptive maternal connection of sorts. But the way she describes him, with such gut-wrenching and raw exposure of herself here, we might just be staring down the barrel of a revelation that Annalise did give birth to Wes herself and that she covered it up and gave him to Rose for fear of what the Mahoneys might do to him — considering their history.

Episode Recaps

How to Get Away With Murder

Viola Davis stars as a law professor where she teaches, wait for it, how to get away with murder.

  • TV Show
  • 6
stream service