The soldier, stabbed in the neck, died during surgery in a hospital, police said.
The soldier was stabbed on a bus from Nazareth that entered the Afula bus station.
A 16-year-old Palestinian who allegedly stabbed the soldier was then held by passengers who turned him over to security personnel, Israel Radio reported.
The youth, from Jenin and illegally in Israel, later confessed to the stabbing, saying he did it because he has relatives in Israeli jails, the radio report said.
"The [attacker] got on the bus and it is unclear whether he intended to stab [someone] or was on his way to work. Eventually he stabbed the soldier sitting next to him," Roni Atiya, a police commander, told Ynetnews.com.