The 19-year-old, from Hebron in the occupied West Bank, stabbed two people on the pavement and a third in a clothes store, a police statement said.
The incident took place near the central bus station in Rishon LeZion, about 10 kilometres south of Tel Aviv.
The Israeli medical service said two of the victims were in severe condition.
The attacker was arrested by security forces after he was locked in the shop, police said.
Nine Israelis as well as 68 Palestinians -- around half of them alleged attackers -- and an Arab Israeli have been killed in a wave of violence since the start of October, raising fears of another Palestinian intifada or uprising.