It happened at 12:30 a.m. Thursday.
Police say officers on patrol spotted an apparent drug transaction in the 600 block of North 52nd Street.
The officers went to make an arrest when a 23-year-old suspect took off running.
They say he jumped over a fence into the backyard of a home in the 600 block of North Creighton Street.
According to police, there was a violent struggle between the suspect and one of the officers.
The suspect began punching and kicking the officer, police say, and then allegedly tried to pull the officer's gun out of its holster.
That's when another officer fired one shot, striking the suspect in the torso.
He was taken to the Hospital of the University of Pennsylvania in critical condition but is expected to survive.
Philadelphia Police Chief Inspector Scott Small told Action News the suspect is known to police.
"Eight packets of what appears to be crack cocaine were confiscated. The suspect is wanted in 3 active warrants," Small said.
The officer involved in the struggle was treated for minor facial bruising.
Police Internal Affairs is investigating the incident, which is the city's second police-involved shooting in as many days, as a matter of protocol.