It happened around 10:30 a.m. on Franklin Street, near the UNC campus.
Police say the suspect, 17-year-old Nasir Brown, snatched a woman's iPhone then fled heading toward Granville Towers.
Two men jumped into action. They were walking from a meeting on the UNC campus back to work on Franklin Street when they heard the 20-year-old UNC student screaming.
The good Samaritans brought the suspect back to the shopping center and held him in the SunTrust Bank parking lot until police arrived.
Chapel Hill Police Chief Chris Blue had a word of caution for people trying to help crime victims.
"We would advise citizens not to put themselves in harm's way unless it is absolutely necessary," said Blue in a statement. "However, we are very appreciative of the citizens who intervened in this case. Their selfless actions helped us take the suspect into custody. I do want to remind citizens that calling 911 is the best safety tip of them all."
Brown was charged with one felony count of larceny from a person and one misdemeanor count of possession of stolen property. At last check, he was being held in the Orange County Jail under a secured bond.