Frank (James Caan) is a jewel thief and ex-convict who has a set structure to his life. With a pair of successful Chicago businesses (a bar and a car dealership) as fronts for his criminal enterprise, Frank sets out to fulfill the missing part of his life vision: a family with Jessie (Tuesday Weld), a cashier he has begun dating.
After taking down a major diamond score, Frank gives the diamonds to his fence, Joe Gags (Hal Frank). However, before Frank can collect his share, Gags is murdered for skimming from the mob’s collection money. Barry (James Belushi), Frank’s friend and associate making the pick-up, discovers that a plating company executive Gags was working for, Attaglia (Tom Signorelli), is responsible for Gags’ murder and stealing Frank’s payoff. In a confrontation at Attaglia’s plating company, Frank demands his money back.
This leads to a meeting with Attaglia’s employer Leo (Robert Prosky), a high-level fence and Chicago Outfit boss. Unknown to Frank, Leo has been receiving Frank’s goods from Gags for some time. He admires Frank’s eye for quality stolen goods and professionalism, and wants him working directly for him, offering Frank large profits. Their meeting is monitored from a distance by police surveillance.
At first Frank is reluctant, not wanting the added exposure or complications. But later that night, conversation with Jessie changes his mind when she agrees to be part of his life, after he relates a tale of prison survival by way of a toughened mental attitude. Frank now agrees to do just one big score for Leo, telling Barry that this will be their last job. After being rejected at the state adoption agency, with Leo’s help Frank is able to acquire a baby boy on the black market, whom he names David after his late mentor, nicknamed Okla (Willie Nelson).
After resisting a shakedown from a group of corrupt police detectives, and then subsequently ditching their surveillance, Frank and his crew are involved in a large-scale West Coast diamond heist organized by Leo. All goes well with Frank’s “burn job” and he is expecting the agreed-upon sum of $830,000 for the unmounted stones of wholesale value $4 million. But when Frank returns from the job, Leo gives him less than $100,000. This is all that Frank will receive in cash according to Leo, who says he invested the rest of Frank’s cut in shopping centers, an idea Frank had previously rejected. In addition, Leo sets up a Palm Beach score for Frank in six weeks without consulting him. Frank tells Leo that their deal is over and takes the cash as he leaves, demanding the rest of his money in 24 hours.
Frank drives to his car lot, unaware that Leo’s henchmen have already beaten and captured Barry and are waiting in ambush. Frank is knocked out and Barry is killed by Carl (Dennis Farina), one of Leo’s enforcers. Frank awakens with Leo staring down at him, surrounded by his henchmen. Leo informs him that he, Jessie, their child, and everything he owns are Leo’s property. He threatens Frank’s family if he does not continue working for him. Leo warns Frank to focus on his responsibilities. When Frank returns home, he orders an uncomprehending Jessie out of their house, telling her their marriage is over. Frank instructs an associate to drive her, the baby and $410,000 in cash to somewhere where they cannot be found, informing Jessie that more money will be coming at regular intervals, but that he will not be joining her.
With nothing to lose, Frank blows up their home using high-explosive charges. He then drives to his business establishments and does the same. Armed with a pistol, he quietly breaks into Leo’s house in a peaceful neighborhood and pistol whips Attaglia in the kitchen. Frank hunts for Leo, killing him in the living room. Frank then pursues Attaglia as he tries to escape from the house, but is confronted in the front yard by Carl and another henchman. In the ensuing gunfight, Frank is shot, but manages to kill the trio. Frank loosens what appears to be a bulletproof vest he was wearing beneath his jacket, and walks away into the night.