Banga Mayor Albert Palencia told Reuters that the teenage gunman had warned his friends during lunch to go home, saying he would be "executing my plan" after the meal. His friends laughed, Palencia said, because the shooter was "a known joker."
"After lunch, he started shooting students. He hit 10 students before killing himself," the mayor said.
Provincial Governor Reynaldo Tamayo confirmed the shooter was among the three dead. The two student victims were 14 years old. Four of the eight injured remain in critical condition, while the injured students range in age from 14 to 17.
In a video verified by AFP and posted to Facebook, a man can be seen carrying an injured child from the school and rushing him into the sidecar of a waiting motorbike. Another video captured a teacher saying there were two shooters, though authorities have not confirmed the presence of a second attacker.
The Philippine Department of Education said it was "deeply concerned" and that its immediate priority was "the safety and well-being of our learners, teachers and school personnel." All classes in the municipality of Banga have been suspended.
The incident comes after two other school shootings since June. Last month, a student live-streamed himself shooting and killing a classmate in Zamboanga before taking his own life. In June, at least three students were killed and around 20 injured when two classmates opened fire at a public high school in Tacloban. The latest attack occurred days after three people were killed and 15 injured in a separate shooting in Cotabato during the first parliamentary election in the Bangsamoro Autonomous Region.
Governor Tamayo urged parents and gun owners to keep firearms out of reach of minors, saying: "We need to be responsible in storing firearms. Gun owners, in particular, must make sure that minors do not have access to them."