Two firefighters of Engine 17 of the Chicago Fire Department are brothers. Lt. Stephen "Bull" McCaffrey, the elder, is experienced, while Brian has labored under his brother's shadow all his life. Brian returns to firefighting after a number of other careers falter, though Stephen has doubts that Brian is fit to be a firefighter. In 1971, Brian witnessed the death of their firefighting father, Captain Dennis McCaffrey, while accompanying him on a call.
The longest serving of all the men at Engine 17, John "Axe" Adcox, served under the McCaffreys' father and was like an uncle to the boys when their father died. He attacks fires head on, but is concerned about Stephen's unorthodox methods and disregard for safety procedures. Helen McCaffrey is Stephen's estranged wife and the mother of their son, Sean. Helen has grown fearful of Stephen's dedication to firefighting and the risks he takes. While they were still in love, she separated from Stephen to protect herself and Sean.
Martin Swayzak is an alderman on the Chicago City Council. Swayzak hopes to be elected mayor, but has made budget cuts to the fire department. Many of the rank and file firemen believe the cuts are endangering firefighters' lives.
Fire Department Captain Donald "Shadow" Rimgale is a dedicated arson investigator and veteran firefighter. He is called in because a number of recent fires resemble fires committed by pyromaniac Ronald Bartel, who has been imprisoned for many years. Brian is reassigned as his assistant after a falling out with Stephen. Rimgale manipulates Bartel's obsession with fire to ensure Bartel's annual parole application is rejected. It is revealed during an investigation that Swayzak was paid off by contractors to shut down firehouses so they could be converted into community centers, with the contractors receiving contracts for the construction.
When Engine 17 answers a call in a high-rise, Stephen urges them to move in quickly to take out the fire despite Adcox's advice to wait for back-up. Brian's friend and fellow trainee, Tim Krizminski, opens a door only to be met by a backdraft. His face is burned beyond recognition, but he survives. Adcox and Brian both blame Tim's condition on Stephen's reckless tactics.
Rimgale and Brian go to Swayzak's home to confront him but interrupt a masked man about to set the place alight. The latter attacks them with a pipe but is burned by an electrical socket on his back. Rimgale saves Brian and Swayzak from the house but is injured in an explosion. In his hospital bed, Rimgale tells Brian to visit Ronald again. Ronald helps Brian realize that only a firefighter would be so careful as to not let the backdraft fires rage out of control.
Brian suspects Stephen, but later spots a burn in the shape of an electrical socket on Adcox's back and reveals his suspicions to his brother just before an alarm. When Brian realizes Adcox has heard their exchange he jumps aboard Truck 46 after borrowing some turnout gear. Stephen confronts Adcox about the deadly backdrafts during a multiple-alarm fire at a chemical plant. Adcox admits he set the fires to kill associates of Swayzak because Swayzak was benefiting from the deaths of firefighters. When an explosion destroys the catwalk they are on, Stephen grabs Adcox's hand while hanging on to the remains of the catwalk. Adcox requests Stephen let go of him, but Stephen loses his grip on the catwalk. Adcox is killed and Stephen is mortally wounded. Stephen dies on the way to the hospital with Brian at his side, his final request being that Brian not reveal that Adcox was behind the fires.
After Stephen and Adcox's funeral, Brian and Rimgale, with the help of the police, interrupt Swayzak at a press conference. Rimgale questions Swayzak on a fake manpower study that led to the deaths of several firemen, including Stephen and Adcox. They also state that Swayzak engineered the downsizing of the Chicago Fire Department. This effectively destroys Swayzak's mayoral ambitions. Brian continues as a firefighter despite the loss of his father and brother.
Output: Who did Brian initially suspect?