Kumar Patel (Kal Penn) is preparing for the holidays by visiting Santa at a shopping mall. Later on, the so-called "Santa" (Patton Oswalt) sells him marijuana in the mall's parking garage. Since being dumped by Vanessa (Danneel Harris), Kumar has let himself go by not pursuing a career as a doctor, poor hygiene and cleaning habits. He still lives in the messy apartment that he once shared with Harold Lee (John Cho), who has gone on to become a successful businessman on Wall Street. Harold's assistant, Kenneth (Bobby Lee), persuades him to buy a 3D television. As Harold and Kenneth leave the building, they are mobbed by angry citizens who throw eggs at them. Kenneth sacrifices himself in order to prevent Harold from being hit. Meanwhile, Vanessa visits Kumar and tells him that she's pregnant with his child, which shocks him. The two get into an argument and Vanessa leaves.
After he arrives home, Harold is seduced by his wife Maria (Paula Garcés), but their attempt to conceive is interrupted by the arrival of her father (Danny Trejo), who dislikes Harold. He explains to Harold that he has never had a perfect Christmas, and is counting on Harold to make this one the best for his daughter. He has also brought a tree which he has grown for eight years and has deemed the perfect Christmas tree. When a package addressed to Harold arrives at Kumar's apartment, Kumar decides to deliver it to Harold. The package turns out to be a large marijuana joint that Kumar cannot resist smoking. Since Harold has gotten married and does not get high anymore, he knocks the lit joint out of Kumar's hands and it lands in the tree, causing a fire that destroys it. (In the 3D movie, Harold throws it out the window, and it boomerangs back in through another window and lands in the tree.) To replace it, Harold reserves one of the last decent Christmas trees available at a nearby lot. Kumar, feeling bad that he may have ruined Christmas for his now-estranged friend Harold, decides to look for a replacement tree, and ends up bribing the tree lot into selling him the tree that Harold had reserved. When Harold sees the car with the tree drive away, he chases it, and the car with Kumar's tree crashes and blows up on the highway, destroying the tree. Harold argues with Kumar right before introducing them to their new friends. Harold, Kumar, Todd, Adrian and Todd's daughter drive to a party in New York to retrieve a Christmas tree at Adrian's partner's party. Things takes a turn for the worse, and Harold and Kumar are forced to go to Broadway, where they hope Neil Patrick Harris can help them get a tree.
After a wild night of performing on Broadway, getting kidnapped by Ukrainian gangsters, and shooting Santa Claus (Richard Riehle) Harold and Kumar return to their regular lives. Harold invites Kumar to his Christmas party the following day. In the evening, Kumar sneaks through Vanessa's window and explains he will stop smoking weed for the sake of her unborn baby and will re-take the exams to become a doctor. Harold returns to Maria's house with her father waiting on the couch. The two argue until Harold explains he might not be the perfect son-in-law, but he is the perfect man for Maria. Maria's father then reveals that while he always knew Harold was a nice guy, he wanted to make sure he had some 'cojones' before accepting him into the Perez Family.
The film ends with Harold and Kumar celebrating Christmas together, along with their families, and Santa Claus smoking a bong while wishing the viewer "Merry Christmas".