Joseph Fitzgerald, 31, of the 3300 block of Belgrade Street, was arrested on Tuesday.
Investigators say it was around 2:00 a.m. Monday that 56-year-old retired police officer George Orth was stabbed in the chest inside his home in the 3000 block of Salmon Street in the Port Richmond section.
Orth was taken to Temple University Hospital in stable condition.
There were conflicting accounts of what exactly happened.
Speaking to Action News on Monday night, Fitzgerald said he and Orth were having drinks at Donna's Bar near Richmond and Allegheny late Sunday night.
They went to Orth's house, Fitzgerald said, to talk about side work. That's when, Fitzgerald said, Orth made sexual advances on him, which he refused. There was a struggle and Fitzgerald said he "panicked."
While Orth declined to be interviewed on Monday, Fraternal Order of Police Vice President John McGrody said the two were having a dispute and Orth brought Fitzgerald into the house to calm him down prior to the stabbing.
The D.A. did not comment on a possible motive in a statement announcing the charges on Wednesday.
Fitzgerald was arraigned on Wednesday morning with bail set at $400,000.