The film opens on the wedding day of Anastasia Steele (Dakota Johnson) and Christian Grey (Jamie Dornan) with all their friends and family in attendance. After the reception, Christian takes Ana straight to their honeymoon by flying on his private jet to visit Europe, where they naturally consummate. Christian remains protective of Ana when they are at the beach and she is sunbathing topless, concerned that other men will try to make a move on her. Christian takes her back to their room, where more kinky sex ensues.
Back at Grey Enterprises, a man is seen going to the company's data center to plant a bomb. Christian's assistant contacts him and informs him that there was a minor fire but nothing serious. After the couple watches security footage, Ana identifies the suspect as Jack Hyde (Eric Johnson), presumably seeking revenge after Ana and Christian got him fired after he tried to assault Ana.
Upon returning home, Christian hires two bodyguards, Sawyer (Brant Daugherty) and Prescott (Kirsten Alter), to stay by Ana's side wherever she goes. He also hires an assistant, Mrs. Jones (Fay Masterson), to help around the house, but Ana says she wants to cook Christian dinner. During their dinner, Ana makes a joke about being pregnant, which appears to make Christian uncomfortable. She asks if he does want kids, and he says maybe someday.
Ana returns to work at SIP where she is promoted to the senior editor position, though she feels that people will think she only got it thanks to Christian. He visits Ana while she meets with a writer, Boyce Fox (Tyler Hoechlin), with the implication that he is jealous, and he is also upset that Ana still uses her maiden name at work and not Grey.
Christian takes Ana to a house he bought away from the city for the two of them. They meet with the architect, Gia Matteo (Arielle Kebbel), who comes off as very flirty with Christian. Ana notices and very assertively tells Gia to back off and to pick a new design for the house.
On their way back to the city, Christian's bodyguard Taylor (Max Martini) informs him that someone is following them. Ana drives the car into the city and manages to evade the driver. They pull over somewhere and begin to have sex. Ana thrusts Christian very vigorously as he climaxes with no condom on.
Later, they review surveillance pictures of the driver, which appears to be a woman and not Jack. Christian orders his people to dig up everything they can on Jack. Afterwards, Ana offers to cut Christian's hair. When she goes to find scissors in his desk, she finds a gun in there. Christian tells her it belonged to Leila Williams (the woman that stalked them), and he didn't turn it in to the police because he didn't want Leila to get into more trouble than she was already in.
Ana goes out for a drink with Kate (Eloise Mumford), despite Christian wanting her home soon. Kate mentions that Elliot (Luke Grimes) said that police found a number of files on Jack's computer of the Grey family, which Christian never told Ana. Before going home, Ana notices she has six missed calls from Christian, but Sawyer told him where Ana was. When she gets home, Jack appears in her room and holds a knife to her throat, attempting to kidnap her. Sawyer and Prescott intervene and take Jack down before the police arrive.
After the incident, Christian is distant from Ana, as he felt he couldn't protect her because he didn't know where she was. He brings her into his pleasure room for some BDSM but he only teases her as a means of punishing her for breaking their trust. Christian says he was fearful because he dreamed that Ana was dead and that he blamed himself for not being able to help her.
To reconcile, Christian surprises Ana with a trip to Aspen with Kate, Elliot, Mia (Rita Ora), and Jose (Victor Rasuk). Upon arriving at their house, Christian plays the piano and starts to sing, which Elliot and Mia say they have never heard him do. Although they are enjoying their vacation, Ana has a nightmare that Jack has found her. She goes to eat ice cream in the kitchen before Christian goes to find her. Soon, they start licking the ice cream off of each other before getting down to the business.
While out dress-shopping with Kate and Mia, Ana notices Elliot out on the streets with Gia, whom Christian had mentioned was an ex-girlfriend of Elliot's. Later that night, the group attends a club where Elliot proposes to Kate, and she accepts. It turns out Gia was just helping Elliot find the perfect ring.
After the vacation, Ana is visited at work by a detective working on the case against Jack. He is set for a bail hearing that afternoon, and he is telling the authorities that he and Ana had a fling that he broke off, leading her to react angrily and get him fired by making up the assault story. Ana attends the bail hearing where the judge grants Jack bail at $500,000 due to his previously clean record. As he is being escorted out, he makes a smug face at Ana.
Ana visits the doctor and finds out she is pregnant. She later tells Christian, who reacts poorly and says he is not ready to be a father, even though Ana insists that they can try to make it work.
Christian later comes home drunk, and Ana takes him to bed. She sees his phone receive a text from Elena Lincoln (his former mistress). Ana sleeps in the pleasure room, feeling betrayed. The two of them argue about it in the morning, with Ana suggesting that if she has to, she will leave Christian for the sake of their child.
At work, Ana receives a call from Mia's phone. However, it's Jack, who was released on bail, and he is holding Mia hostage with the demand that Ana bring him $5 million within less than two hours, and if she tells Christian, Jack will return Mia in pieces.
Ana goes to the bank to withdraw the money. Christian calls her after hearing about this and thinks that Ana is trying to leave her, but she cannot explain herself. Jack calls Ana again and tells her he knows Christian is arriving at the bank because he has a driver outside the bank keeping an eye out. He orders Ana to give the driver her phone when she gets there. Ana gets the money but borrows the phone of one of the tellers. Before Christian can get to Ana, she is already getting in the car with the driver, Liz (Amy Price-Francis), an assistant from work that slept with Jack and is being blackmailed by him since he taped them. Sawyer informs Christian he saw Ana get in Liz's car and that she threw Ana's phone out, but it turns out Ana hid her own phone in the money bag and is allowing Christian to track her phone.
Ana arrives at the meet up with Jack. He proceeds to hit Ana and kick her in the stomach. Ana takes out Leila's gun and shoots Jack in the leg just as Christian and the cops arrive. Jack and Liz are arrested and Ana is taken to the hospital.
In the hospital, Christian is by Ana's bedside with his mother Grace (Marcia Gay Harden). Christian tells Grace he was worried Ana would leave him, but Grace is confident Ana would never do that. Ana soon wakes up, and Christian goes to her with tears in his eyes.
At home, Ana and Christian go over the case files on Jack. It turns out that Christian and Jack were both part of the same foster care group, and Christian wonders if he would have turned out like Jack if he didn't get adopted, but Ana assures him he wouldn't have. Ana also notices that the police found out where Christian's biological mother is buried. The two visit her grave and place flowers down.
Ana reflects on her whole journey with Christian and how they fell in love. Ana then goes to the pleasure room and invites Christian to join her.
The final scene is years later with Ana and Christian at their house with their son, and Ana is already pregnant with their second child.