The incident happened around 3:45 a.m. in the 400 block of Delaware Avenue.
According to the Burlington County Prosecutor's Office, it all began with a 911 call from a resident there for a man who was causing a disturbance in the street.
Officer Frank Ambrifi arrived on the scene, encountered the 21-year-old man, and a struggle ensued.
Ambrifi fired his weapon and hit the man more than once, the prosecutor's office said.
Also during the struggle, Ambrifi's service revolver went off, hitting him in the knee.
Ambrifi was taken to Cooper University Hospital for surgery. He is expected to make a full recovery.
The 21-year-old man is listed in critical but stable condition.
That man's name has not been released.