On Christmas Eve in Europe in 1944, at the height of World War II, former Broadway star Captain Bob Wallace and aspiring performer Private Phil Davis entertain the 151st division with a soldier's show. The men have just received word their beloved Major General Thomas F. Waverly has been relieved of his command. Waverly arrives and delivers an emotional farewell. The men send him off with a rousing chorus of "The Old Man". After Waverly departs, enemy bombers attack the area and everyone takes cover. Davis shields Wallace from a collapsing wall and is wounded by debris. Wallace asks how he can pay back Davis for saving his life, and Davis suggests they become a duo act. Bob is not fond of the idea, but feels obliged to agree.
After the war, the two make it big, first as performers, then as producers, launching a hit musical, Playing Around. They receive a letter supposedly from their old Mess Sergeant, Ben "Freckle Face" Haynes, asking them to view his sisters' act. They watch Betty and Judy sing at Novello's, a Florida nightclub. Phil, who likes to play matchmaker, notices Bob is interested in Betty. After the performance, the four meet, and Phil and Judy immediately hit it off. Betty and Bob, however, argue about Bob's cynicism, and the fact it was actually Judy who wrote the letter instead of Ben.
Finding out from Judy that the girls' landlord is falsely suing them for a damaged rug, and has even gone so far as to call the police to get his money, Phil gives them tickets he and Bob had purchased to spend Christmas in New York City. Bob and Phil improvise a performance to buy the girls time, then flee to the train, where they now have to sit up in the Club Car, much to Bob's chagrin.
The girls convince Phil and Bob to forgo New York and spend Christmas with them in Pine Tree, Vermont, where they are booked as performers. Upon arriving in Vermont, they find all the tourists have left due to no snow and unseasonably warm weather. They arrive at the empty Columbia Inn and are aghast to discover that General Waverly is the landlord of the hotel, has sunk his life savings into it, and is on the verge of bankruptcy. Phil and Bob decide to invite some of the cast of Playing Around to Pine Tree to stage a show to draw in the guests, and include Betty and Judy in the show. Betty and Bob's romance starts to bloom.
Later, Bob discovers Waverly received a humiliating rejection letter to his request to rejoin the army. Bob determines to prove to the General he is not forgotten, and calls up Ed Harrison, another old Army buddy who now has his own variety show, for help. Ed suggests they put the general on the show and make a big scene of his misfortune and Bob's kindness, which would be free advertising for Bob and Phil. Bob strongly rejects the idea. Unfortunately, the housekeeper Emma eavesdrops on the other phone for the first half of the conversation. She relays Ed's idea to Betty, who becomes suddenly cold towards a baffled Bob.
Phil and Judy stage a phony engagement, thinking Betty is trying to avoid romance because she does not want to leave Judy unprotected. However, this backfires when Betty accepts a gig in New York and leaves. Phil and Judy admit the truth to Bob, who becomes enraged and hurries to New York to tell Betty. They partially reconcile, but he meets up with Harrison before he has a chance to find out what really was bothering her. Betty sees Bob go on Harrison's show and invite the entire 151st division to secretly join him at Pine Tree to surprise General Waverly, at Bob and Phil's expense. Realizing she was mistaken, Betty returns to Vermont just in time to be in the show.
Once again on Christmas Eve, the soldiers surprise General Waverly with another rousing chorus of "The Old Man" when he arrives at the show, bringing him to tears. During the performance, Betty and Bob become engaged, and Judy and Phil decide to go through with their own engagement. As everyone sings "White Christmas", a thick snowfall at last blankets Vermont.
Bing Crosby as Bob Wallace
Danny Kaye as Phil Davis
Rosemary Clooney as Betty Haynes
Vera-Ellen as Judy Haynes
Dean Jagger as Major General Tom Waverly
Mary Wickes as Emma Allen
Johnny Grant as Ed Harrison
John Brascia as John/Johnny, Judy Haynes' dance partner
Anne Whitfield as Susan Waverly
Percy Helton as Train conductor
I. Stanford Jolley as Railroad stationmaster
Barrie Chase as Doris Lenz
George Chakiris as Betty Haynes' background dancer
Sig Ruman as Landlord
Grady Sutton as General's guest
Herb Vigran as Novello
Leighton Noble as Novello's (Florida) bandleader (uncredited)
Dick Stabile as Carousel Club bandleader (uncredited)