The incident happened at a barbershop on the 400 block of Orange Street around 8:30 p.m.
Police say the suspect, later identified as 42-year-old Phillip Hedgespeth, entered the business, where the off-duty cop was a customer, and pulled out his gun.
The brother of a witness to the incident said Hedgespeth pulled the trigger of his gun twice, but his gun jammed. That's when the barber and the off-duty officer tackled him.
After a struggle over the gun, the off-duty officer fired two shots. He struck Hedgespeth, who fled the scene and made his way into a getaway car.
The off-duty officer ran next door to a police station and gathered other officers, who then proceeded to chase the getaway car.
Investigators later pulled over a Dodge Challenger in the 1100 block of McCarter Highway, and Hedgespeth and another man jumped out of the vehicle and ran into an industrial area. They were both caught by police.
Officials say Hedgespeth's injuries were not life threatening. He faces charges of robbery, unlawful possession of a weapon and possession of a weapon for unlawful purpose.
The off-duty officer was not injured in the incident. The investigation is ongoing.
* More New Jersey news
* Send us a news tip
* Download the abc7NY app for breaking news alerts