Kate is a young woman subscribed to bad decisions. Her last date with disaster? That of having accepted to work as Santa’s elf for a department store. However, she meets Tom there. Her life takes a new turn. For Kate, it seems too good to be true.
Kate is a cynical young woman whose relationship with her family is strained. She works as an elf for a year-round Christmas shop, and she sleeps wherever she is allowed. Things change when she meets an odd but charming man named Tom. He shows Kate a good time around the holidays, but also reminds her that she cannot always be dependent on him.
It turns out that Tom has been dead the whole time. A year earlier (or, “last Christmas”), he died while riding his bike, and Kate, who suffered from an illness that required a heart transplant, was given his heart since he had a donor card. She has been seeing his spirit the whole time, but he has influenced her to be a better person.
Kate repairs her relationships with her friends and family, and even volunteers at a homeless shelter. Together, they put on a festive Christmas show for her family and others to see.
Katarina “Kate” (Emilia Clarke) works a dead end job as an elf at a Christmas shop that sells ornaments year round. She has recently been kicked out by her roommate making her homeless. While at work she notices a man outside staring upwards. Going out to meet him Kate learns his name is Tom (Henry Golding) but despite her initial attraction to him Kate finds his friendliness alarming and strange.
After an unsuccessful singing audition Kate runs into Tom again and the two go for a walk where she is charmed by him. Returning to work the following morning she learns that she didn’t lock up the shop leading to a theft. Her boss “Santa” (Michelle Yeoh) expresses disappointment in Kate saying that when they initially met Kate was a thoughtful and kind person.
Isolating herself from the one friend who let her crash at her apartment, Kate is forced to return to her home where her mother (Emma Thompson) a Yugoslavian immigrant, suffers from depression and her father spends as much time as he can working as a minicab driver to avoid her. Kate resents her mother who dotes on her while ignoring Kate’s sister Marta (Lydia Leonard) who is a successful lawyer.
Kate begins spending more time with Tom who rides a bike and volunteers at a homeless shelter which Kate mocks. While searching for Tom, who says his mobile phone is in a cupboard and who frequently disappears for days, she helps in the shelter in the hope of meeting him.
Celebrating Marta’s promotion Kate ends up outing Marta, who lives with her girlfriend. Upset Kate runs into Tom who finally takes her back to his apartment. While there Kate reveals that a year earlier she was seriously ill and had to have a heart transplant. For a time the transplant made her mother happy as she had someone to care for but Kate feels half dead. After opening up to Tom, Kate tries to initiate sex but he declines.
After spending the night with Tom, Kate begins taking small steps to improve her life, taking care of her body, setting up Santa with a Danish man (Peter Mygind) who loves Christmas as much as she does, apologizing to Marta and using her singing talent to busk for money for the homeless shelter. After a few days she runs into Tom again but when he shuts down the idea of a relationship she is disappointed.
Nevertheless Kate continues to do good in her life. Finally wanting to make amends to Tom, Kate returns to his apartment only to meet an estate agent who is holding viewings. He reveals that the previous owner was killed in a bicycle accident a year ago and the place has been empty during the probate process. Finding his phone in the cupboard, Kate realizes that Tom was the organ donor whose heart is now inside her, and that all their interactions were just herself and she only imagined Tom was there. Going to a small garden which was Tom’s favourite, Kate encounters him again where he says his heart will always belong to her.
For Christmas Kate organizes a show utilizing the talents of the people at the shelter and inviting all of her friends, new and old. At Christmas she and the family celebrate with Alba, Marta’s girlfriend, for the first time.
In the summer a healthier, happier Kate sits on Tom’s memorial bench in the garden where Tom brought her and looks up, as Tom always directed her to.
Yugoslavia, 1999 – The Andrich family is having a Christmas service where little Katarina (Madison Ingoldsby) is singing in the choir. Her parents Petra (Emma Thompson) and Ivan (Boris Isakovic), plus sister Marta (Lucy Miller) watch and admire her singing, while Marta is admiring one of the other choir girls.
London, 2017 – Katarina now goes by Kate (now played by Emilia Clarke). She has become distant from her family, but especially Petra and Marta (now played by Lydia Leonard). She hooks up with a guy at a bar and sleeps at his place. When she uses his shower in the morning, she is greeted by the man’s wife, who kicks Kate out onto the street and leaving her to lament about why her life is bad.
Kate works at a Christmas shop as an elf, working for a woman who goes by “Santa” (Michelle Yeoh), who sees potential in Kate but is annoyed at her constant screw-ups. While at work, Marta visits Kate and forces her to step outside and talk to their mom, even though Kate doesn’t want to. Later on, Kate meets a man named Tom Webster (Henry Golding). Kate finds him charming, if not a bit odd. Their moment is then ruined by a bird pooping on Kate’s face.
Outside of work, Kate tries to crash with her friend Jenna (Ritu Arya) and her husband Rufus (Ansu Kabia), the latter not being too fond of Kate after she accidentally burned his model ship. Kate tries to make an audition for a theater production, but she arrives late and is forced to sing a capella, and the judges dismiss her.
At the shop, a Danish man (Peter Mygind) enters. He and Santa appear to share a connection, which Kate notices. She later leaves work after accepting an invite to go out with Tom. They go out on the town, which proves to be fun for Kate. She learns that Tom volunteers at a homeless shelter in his spare time. The night ends with them entering an ice skating rink. They have a good time until a security guard kicks them out.
In the morning, Kate goes to the shop to find that it was broken into. Kate realizes she forgot to properly lock up before going out with Tom. Santa already knew this and says she broke a window to make it look like a break-in just for the insurance. She scolds Kate and says she is going to give her another chance even though she shouldn’t. To make matters more complicated, Jenna and Rufus kick Kate out after one too many screw-ups.
On another outing with Tom, the two end up going back to his place. Kate tells him about an illness she had in which she required a heart transplant and it made her feel bad about herself, in that she was “half-dead” due to needing help. Kate then asks Tom to kiss her goodnight, which he does. However, when she tries to see him again, Tom tells her that she cannot keep being dependent on him, which just makes her upset.
Kate joins her family for dinner. Marta makes things tense by suggesting that Kate always acts helpless after the illness, while Kate outs Marta by saying that she has a girlfriend named Alba (Jade Anouka). Petra and Ivan are also called out for, respectively, being smothering and also barely being home since Ivan works as a cab driver, but Kate thinks he takes the hours that he does to get away from his family.
Kate goes to the homeless shelter to look for Tom. One of the men working there doesn’t appear to know who Kate is talking about. She ends up getting roped into volunteering and helping out, and later even sets up a bucket outside while dressed as an elf to sing Christmas carols.
Kate starts to try and do right by other people, starting with her family. She apologizes to Marta and finally meets Alba, albeit under tense circumstances. Marta forgives her sister. Later on the bus, Kate sees a Yugoslavian couple get harrassed by a racist guy. Kate sits by them and speaks to them in their native tongue, telling them that they are welcome there, and she introduces herself as Katarina. She even does better at work and bonds with Santa, who tells her that she only uses that nickname for whatever job she has, as nobody else is going to know how to pronounce her name. Additionally, she tells Kate that she is seeing the Danish man, but since she can’t pronounce his name either, she simply refers to him as “Boy”.
Kate later goes by Tom’s apartment to visit him. She meets a realtor who is putting the place up on the market. Kate thinks Tom is selling the place, but the realtor informs her that the previous owner has been dead for months. He mentions that his name was “Webster,” and that he passed away a year ago. We see a flashback in which Tom rode his bike through the streets and was hit by a truck. As he was a donor, his heart was transplanted to Kate. In other words, LAST CHRISTMAS, Tom gave Kate his heart. Kate is devastated and sits by the bench that she frequented with Tom, which turns out to be a memorial for him. Tom’s spirit visits Kate one last time to give her reassurance that she will be fine.
Sometime later, Kate has helped put on a Christmas show with the help of the patrons of the homeless shelter. She wears a festive dress as her family comes to see her, and they all perform “Last Christmas.”