Police said the suspect broke a bottle on the back of a 29-year-old woman and then took a shard of glass and slashed the second woman, a 25-year-old, in the neck.
Good Samaritans helped the victim, and police caught the suspect about five blocks away.
"Everybody was taking good care of her," a witness said.
Police said it happened just after 3 p.m. near the intersection of Wooster Street and Broome Street.
The 25-year-old was taken to Bellevue Hospital.
"We're praying that she comes out of surgery and that she's going to make a quick recovery," said NYPD Commanding Officer James McCarthy.
Meanwhile, some stores closed early after crime scene tape kept shoppers away.
"Hopefully this girl is fine and gets through it. It's sad," a passerby said.
Police said the suspect is a man in his 40s who gave a fake name and appears to be mentally ill.
Investigators are trying to determine the real identity of the man in custody and if he has a history of violent, unprovoked attacks.
* Get Eyewitness News Delivered
* Follow us on YouTube
* More local news
* Send us a news tip
* Download the abc7NY app for breaking news alerts