The story, written by Chazz Palminteri, is adapted from his autobiographical one-man play. His real name is Calogero Lorenzo Palminteri. Several studios approached him to purchase the film rights, with at least one offering one million dollars, but Palminteri refused to sell to them unless he could write the screenplay, and play the role of Sonny. None of the studios agreed as they wanted to hire another actor. Then Robert De Niro offered to go into a 50/50 partnership, with all of Palminteri's conditions met, as long as De Niro could direct and play Lorenzo. Palminteri agreed, and their contract was sealed on a handshake.
When Robert De Niro had trouble finding a suitable actor to portray Eddie Mush, he asked Chazz Palminteri if they could find the real Eddie Mush to play himself. They found Eddie Montanaro in the same neighborhood still losing bets. After casting him, they became worried that Eddie Mush would "jinx" the film. On Montanaro's first day of filming, it rained.
Casting scouts searched around New York City and Long Island for a teenager to play the role of Calogero. A scout noticed Lillo Brancato on Jones Beach. For most of his childhood, Brancato had done impersonations of Robert De Niro and was often told that he resembled De Niro. When he performed an impersonation for the scout, he became one of two actors remaining to play the role.
De Niro wanted Palminteri to be involved in every aspect of production. Palminteri was involved in casting, scouting locations, editing, and sound mixing.
Kathrine Narducci brought her nine-year-old son to the open casting call to audition for the role of young Calogero. When she saw that the role of Calogero's mother was available, she asked if she could also audition, and got the part.