Fool Me Once managed to fool us all. Coming to blows in the explosive season finale, the Harlan Coben drama finally revealed who killed Joe Burkett – and fans have been left "speechless" on social media. For those of you who haven't tuned in yet, Fool Me Once follows Maya Stern, played by Michelle Keegan. Newly widowed, the former military captain and mum-of-one finds herself at the centre of a spine-chilling conspiracy.
After witnessing the murder of her beloved husband, Joe Burkett (Richard Armitage), a grieving Maya is shocked to discover footage of him – alive and well – on a secret nanny cam in their home. Conducting her own investigation, Maya quickly learns that Joe's death is part of a disturbingly tangled web, and it's also connected to the unsolved murder of her beloved sister, Claire.
So, what happened? Keep reading for a recap of the season finale. But warning – spoilers ahead.
Fool Me Once's ending explained
Who killed Joe Burkett?
The season finale picks up moments after Maya's shocking confession – she killed Joe, with a gun, in the park – dum, dum, dum! After following our girl (pun intended) for seven episodes, and believing her to be as clueless as the rest of us, it turned out that we'd all been played for fools.
In spite of the mysterious nanny cam footage, Maya had been adamant that Joe was dead from day one, and now we know why. In a shocking twist, it's revealed that she'd planned the murder, after suspecting that her husband was behind Claire's brutal execution.
Failing to believe that Claire had been shot in a random break-in at her home, Maya had returned home from the army, putting her detective skills to use. With the help of her military police pal, Shane, Maya quickly learned that the bullet that shot Claire was an exact match for the handgun that she keeps at home. Stored in a high-security safe, Joe was the only other person who could have accessed it.
Hoping he'd prove her wrong, Maya called Joe and told him she knew what he'd done. After luring him to their spot in the park, Maya confronted him about the murder, which Joe initially denied, but in a final attempt to force his hand, Maya threatened to go to the police.
Pulling a gun on his own wife, Joe pulled the trigger, but it was Maya who had the upper hand. Before the meeting, Maya had swapped the handgun in her safe, for a deactivated one. That way, if Joe attempted to shoot her – thus proving he was the killer – she could protect herself and return home to their daughter, Lily.
Exacting her revenge, Maya shot Joe three times that night, before covering herself in his blood and calling for help. The only problem with her plan? Rambo – a handbag thief operating in the park with his pal PJ – had witnessed the murder.
After recalling her plan, a shell-shocked Shane helps Maya out one last time. Driving Isabella, and her boyfriend, Tuka – who were behind the deep-faked video of Joe on the nanny cam – away from the car park where she'd held them at gunpoint, he drops them on a main road and tells them to walk home.
Maya, now aware that Joe's mother, Judith (Joanna Lumley), had asked Isabella and Tuka to fake the footage, returns home where she cleans herself up and writes a letter to her daughter Lily.
Meanwhile, acting on a tip from PJ, DS Sami Kierce (played by Adeel Akhtar) manages to track down Rambo. After learning what happened in the park, he heads to Maya's house where he arrests her. After confessing, Maya pleads with Kierce to give her a shot, so that she can finally bring down the Burkett family.
Why did Joe Burkett kill Maya's sister Claire Walker?
In a bid to stop whistleblower Corey Rudzinzki from publishing the audio of a military blunder made by Maya, Claire had struck up a deal with him – she'd uncover the corruption in the Burkett family if Corey promised to leave Maya alone.
What Claire found, however, was way worse than she could have imagined. As well as discovering that the family had been falsifying pharmaceutical trial results to fund their affluent lifestyle; Claire also uncovered a series of murders, all committed by Joe.
Not only had he been behind the hazing and accidental murder of Theo Moran – his brother Andrew's best friend from school – he'd also pushed Andrew off the family yacht so that he couldn't confess to their crime.
MORE: Fool Me Once star Michelle Keegan reveals sweet New Year’s Day plans - exclusive
Adding to his pile of bodies, Joe, learning of Claire's findings, staged a burglary, and shot her in the head, silencing her forever. He also killed Tommy Dark, the captain of the family's yacht, to tie up any loose ends surrounding Andrew's death.
Does Maya finally take down the Burketts?
Working with DS Kierce and whistleblower Corey, Maya comes up with a plan. Heading to the Burkett family home, she confronts Joe's mother Judith, as well as his remaining siblings, Neil (James Northcote) and Caroline (Hattie Morahan).
In a fiery row, Judith admits to faking the nanny cam footage, and she also acknowledges the fact that Joe killed Claire, to stop her from outing their falsified pharmaceutical results.
Surprisingly, however, the Burketts didn't know that Joe had killed Andrew. Asked if she killed Joe, Maya finally tells the family what she did, explaining that she wasn't going to let a monster raise her daughter. Promising to out the family for their endless crimes and cover-ups, Judith attempts to strike up a deal.
She plans to blame Joe for the false drug trial results and suggest that this was the reason for his murder. That way no one goes to prison, and the Burkett's remain untarnished. But, to Judith's chagrin, Maya says no.
Picking up the gun, Neil shoots Maya three times, and as she lies dying with a smile on her face, she points to something – the nanny cam, which she'd set up on the mantelpiece. The whole thing has been live-streamed with the help of Corey, and now the world knows what really happened.
What happened in the eighteen-year jump?
Alive and well, DS Kierce is loving life with his wife and son. After realising that the Burkett's pharmaceutical drugs had been making him ill, the detective is back in good health, and grateful to Maya for exposing the truth.
Meanwhile, a now grown-up Lily has welcomed a daughter of her own with her partner, whom she names Maya, in her late mother's honour. Eddie, who was given custody of Lily, looks on proudly, as does Maya's BFF Shane. Heading to the hospital to meet Lily's little bundle of joy, DS Kierce can't help but smile as he learns her name.