The film opens with Mark Renton (Ewan McGregor) running on a treadmill at the gym. He sees flashes of himself in his younger days, and as he's distracted, he slips off the treadmill and goes unconscious.
We see a clip of Mark as a child with his best friends Simon "Sick Boy" Williamson (Jonny Lee Miller), Daniel "Spud" Murphy (Ewen Bremner), and Francis "Franco" Begbie (Robert Carlyle) as they play football on the streets with other kids from their neighborhood.
In the present day, Franco meets with his lawyer, Stoddart (Steven Robertson), who tells him that his parole has been denied due to his violent nature. Franco insults Stoddart for bringing him bad news. The lawyer is ready to push the yellow buzzer button under the table for the guards outside the room to come in to restrain him, which Franco can see. He then lunges at Stoddart.
Meanwhile, Spud is in a group meeting for drug addicts, as he is still unable to kick his heroin addiction. He tells everyone how because he didn't realize it was daylight savings time, he was an hour late for work and was fired, then an hour late to everything else in the day, including a custody hearing between him and his former partner Gail (Shirley Henderson). Spud cares deeply about their son, "Wee" Fergus, but Gail won't let Spud stay in their lives due to his habits.
Elsewhere, Simon approaches a businessman named Tulloch (Gordon Kennedy) in his car. He shows Tulloch a flash drive containing a video of Tulloch getting penetrated by a prostitute, who is really Simon's Bulgarian girlfriend Veronika (Anjela Nedyalkova). Simon blackmails Tulloch for money or else he will show the video to Tulloch's wife. Simon has also developed a serious cocaine habit.
Mark returns home to Edinburgh, Scotland for the first time in 20 years since he stole money from Franco and left £4,000 to Spud. Mark visits his father (James Cosmo), who tells Mark that his mother had passed away in his absence. She had always hoped Mark would return.
Spud writes a letter to Gail and Fergus to apologize for his screw-ups and say he only wants to see them smile again. Mark goes by his apartment and breaks part of the door off to see Spud attempting to suffocate himself with a plastic bag over his head. Mark kicks the door down and helps Spud as he pukes inside the bag. Mark rips the bag open and saves Spud. However, Spud isn't happy to see Mark after the last time they saw each other. Even after Mark left Spud with the money, Spud wasted a lot of it on smack. He's angry with Mark for ruining his life, and now his death.
Franco is in the hospital after getting an inmate to stab him in the abdomen. When he is left alone in his room, Franco leaves and knocks out a doctor to escape the hospital undetected.
Mark goes to the Port Sunshine pub that Simon runs. There is only one other patron there. Mark wants to make amends with Simon, but he is also not very pleased to see Mark again. The two start fighting violently around the pub until they're both hurt and tired. Simon later talks to Veronika about running into Mark again. He plans to bring him into their venture to create a "sauna" (brothel), but Simon is only using Mark under the pretense of friendship.
Franco returns to his old home to find his wife June (Pauline Turner) startled to see him again. He then sees his son, Frank Jr (Scot Greenan), older than the last time Franco saw him. He embraces his son and learns he has applied to go to university. Franco later tries to have sex with June but he cannot maintain his endurance.
Mark takes Spud running up Arthur's Seat in an effort to help his friend kick his addiction. He later goes to Simon's house as he's watching a bizarre music video. Mark admits he previously lied about having two kids, although he is going through a divorce and is losing his job. Mark also mentions having a metal plate in his chest after suffering an episode, and after doctors told him it would last him 30 years, he had a crisis about what he would do with another 30 years of life.
Franco takes Frank Jr. with him to burgle houses and then bring some of the stolen goods to Franco's old mate Mikey Forrester (Irvine Welsh), who has moved up in the world since he last saw Franco and the other guys.
Mark, Simon, and Veronika drive out to Glasgow to the 1690, a unionist pub. Veronika stays in the car while Mark and Simon go around picking peoples' cards out of their coats. They try to leave, but the pub owner tells them they can't leave without singing a song. The two awkwardly go up as Simon sits to play the piano. Mark makes up lyrics about the Battle of the Boyne, which gets the crowd cheering and uproarious as Mark sings about "there were no more Catholics left". He and Simon then leave feeling victorious. They and Veronika then continue to bond over their business venture and shared interests. Veronika jokes that Mark and Simon should just fuck each other, but also notes that they are stuck living in the past.
Franco learns that Frank Jr. wants nothing to do with his criminal activities and would prefer to go to uni. Franco insults his son and tries to egg him on to hit him, but Frank Jr. never makes a move, leading Franco to continue insulting him.
Simon gets arrested when one of his blackmailing victims comes forward to the police. He calls Mark for help getting a lawyer. Mark and Veronika visit Mark's old girlfriend Diane Coulston (Kelly MacDonald) to get Simon out. Diane asks Mark if he and Simon are still doing heroin. When they finish the meeting, Diane privately tells Mark that Veronika is too young for him.
After Simon gets out, he is visited at the pub by Franco. They discuss Mark and getting back at him while doing lines of cocaine.
Mark spends time with Veronika on his own as he is attracted to her, and she prefers his company over Simon's, even though she says she may like Simon more than he likes himself. Veronika asks Mark over dinner about his "Choose Life" shirt. He then goes into an updated "Choose Life" monologue that becomes very passionate. Veronika says she likes Mark, and they later go home and have sex.
Meanwhile, Spud is making active efforts to better himself. He takes up boxing lessons, cleans out his belongings, and has even written down stories based on his experiences with his friends.
Mark, Simon, and Spud go by a location their late friend Tommy MacKenzie took them to in their younger days. Simon blames Mark for Tommy's death as it was he that introduced Tommy to heroin. Mark fires back by reminding Simon of how his addiction led to the death of his baby Dawn, and how she would have been a woman now. Simon is left silent.
Mark and Simon go to the European Union to pitch their Port Sunshine venture for a loan of 100,000 pounds. They succeed in getting the money. They later do heroin for the first time in years.
The guys go to a nightclub. Mark goes to use the toilet, and doesn't know Franco is in the stall next to him. Franco drops his viagra pills into Mark's stall, and they exchange banter as they slowly realize they are speaking to each other. Mark runs like hell out of the club as Franco gives chase. He follows Mark to a parking garage. Mark hops on top of a van as it is driving away. Franco slashes Mark's arm as the van passes, but Mark still manages to escape him.
Mark and Simon are approached on the streets by a rival sauna owner in the area. He takes the two to the woods and forces them to strip naked and abandon their sauna venture so as to not have competition. Mark and Simon must go home nude until they pass a barn and take wrapping to cover themselves.
Franco visits Spud to learn of Mark's whereabouts. He discovers Spud's memoirs, including the incident in the first film where Franco chucked a glass at a woman's face and pretended it wasn't him. Franco also learns about the money that Mark left Spud. Veronika then visits Spud as she has been helping him out as well. Franco threatens them both but lets Veronika leave once she gives him her phone. Franco texts Mark and Simon to make it look like Veronika is asking to meet them both at the pub. Franco later visits June and Frank Jr. one last time, knowing they probably won't see him for a long time after this.
Mark and Simon go ahead to the pub, not knowing they were both called there. Spud runs in to try and warn them of Franco, but it's too late. Franco fights his old friends and knocks Simon out before he chases Mark upstairs. Mark tries to appeal to Franco by reminding him of when they met as children. Mark tries to escape over the open ceiling, only for Franco to push him through and cause him to get his neck wrapped in wires, leaving him hanging. Franco goes to finish Mark off, only for Simon to spray something in Franco's face, and finally having Spud knock Franco out with a toilet. They help Mark down and put Franco's body in the trunk of their car so they can return him to prison.
Veronika tries to convince Spud to go away with her and to take the money from Mark and Simon. Spud says he'd only use his money on drugs, but he wants to leave his money to Gail and Fergus. Using his forgery skills, he has their money transferred to another account, so Veronika can return to Bulgaria to reunite with her son and mother.
In the final scenes, Spud decides to write his memoirs into a book, which he has Gail read first. Mark and Simon, meanwhile, have repaired their friendship. Mark goes back home to be with his father. He goes into his old bedroom and plays "Lust For Life" on his record player.