The shooting happened in the 1000-block of West North Avenue, at the North & Sheffield Commons shopping mall.
"I got a call from my husband that all the streets are blocked and cops are going down the street toward the hospital," said Emily, who lives nearby and asked to only share her first name.
Police said the officer was shot in the cheek and taken to Illinois Masonic Hospital for treatment in good condition. He was released from the hospital around 8 p.m. and stopped at the 18th District before heading home to his family, CPD spokesman Tom Ahern said.
Chicago Police Superintendent David Brown said the incident started when a seemingly strange and erratic customer inside the Ulta Beauty store caught employees' and customers' attention. The confrontation escalated quickly, and the store's security guard called police. An officer responded.
WATCH: Full update from Chicago police
Investigators said the suspect started struggling with the officer, first in the store and then spilling outside into the parking lot. Police said a second officer arrived almost immediately.
"The person got to their car, got inside their car, a struggle ensued and shots were fired," Brown said.
The person fired three times, police said, but the officer was struck only once in the face, a through-and-through injury. The shooter was taken into custody almost immediately, about 3:35 p.m., police said.
Jovan McPherson, 23, of Elgin was charged in connection with the shooting and battery of a second officer, police said Tuesday morning.
RELATED | Surveillance video shows traffic stop before fatal shooting of CPD officer
He faces felony charges of attempted first-degree murder, aggravated battery against a peace officer, unlawful use of a weapon and resisting a peace officer.
McPherson was also charged with the armed kidnapping and aggravated unlawful restraint of a 21-year-old woman right before shots were fired Monday, police said.
A short cell phone video clip shows the officer leaning against a silver car just moments after he was struck by a bullet in his cheek, customers still scrambling, as colleagues rushed to his aid.
No further details about the officer have been released pending notification of their family. Officers did not fire their weapons, Brown said. A gun was recovered, police said.
Brown said Chicago police were extremely quick to respond to both the incident at the Ulta store and the shooting itself because the department has increased patrols in that area as part of their overall citywide safety plan following some targeted shoplifting.
RELATED | Slain CPD officer's mother thanks Chicago in letter on daughter's birthday
Dozens of investigators fanned out across the North Side shopping center, gathering surveillance video and marking bullet casings.
Alderman Brian Hopkins confirmed the store has been subjected to organized shoplifting schemes in the past.
"This is a stark reminder of the danger these men and women face every day," he said. "I don't know how much more of this we can take. I don't know how our city can survive."
Ulta released a statement, saying, "At Ulta Beauty, the safety of our associates and guests is our highest priority. We are actively cooperating with the Chicago Police Department as they investigate what took place outside our store on Sheffield. Our teams will continue to care for one another."
READ MORE | Fundraiser helps families of officers injured, killed in line of duty
McPherson is due in bond court Tuesday.