Stanley Dishon, 55, only recently became a suspect in the killing of Jessica Dishon, 17, of Shepherdsville, The (Louisville) Courier-Journal reported.
A neighbor of Jessica's family, David Brooks, was charged with the crime in 2001 but the charges were dropped after the judge in the case declared a mistrial.
Dishon is being held in the Bullitt County Jail on charges of raping another girl more than three decades ago.
Jessica was last seen alive by her mother on Sept. 10, 1999. Her body was found 17 days later in the Salt River Bottoms along a tributary of the Ohio River.
Bullitt County Sheriff Dave Greenwell, who investigated the case as a deputy, said at a news conference he is convinced investigators have now identified Jessica's killer.
"What makes it so emotional is that I did all I could do at the time, but you never feel you have done enough," Greenwell, who appeared close to tears, said.
John Spainhour, Brooks' lawyer, said Dishon should have been a suspect much earlier. Dishon was charged with sexually assaulting two girls, one of them another niece, three years after Jessica's death, and served a prison sentence.
Megyn Kelly: Santa Claus and Jesus are both white men
Costly malfunction causes beer flood at Boston-area brewery