La fusillade s'est produite à Aracruz, une ville de 100.000 habitants, à environ 600 kilomètres au nord-est de Rio de Janeiro. Trois professeurs et un étudiant à l'âge non précisé sont dans un état grave, ont affirmé les autorités.
Le visage couvert et une croix gammée sur ses vêtements de camouflage, l'assaillant s'est introduit dans l'école Primo Bitti, une école primaire et secondaire publique qu'il avait quittée en juin, selon les enquêteurs.
Après avoir franchi le portail situé à l'arrière de l'établissement, il s'est rendu dans la salle des professeurs et a ouvert le feu sur plusieurs enseignants, tuant deux personnes et en blessant neuf autres, ont indiqué les autorités.
Les images de vidéosurveillance diffusées par les médias montrent le jeune homme entrant dans l'école avec une arme à la main, tandis que plusieurs personnes fuient dans son sillage. On le voit en train de tirer quelques coups de feu, sans s'arrêter.
Il s'est ensuite rendu, non loin de là, au Centre d'éducation Praia de Coqueiral, une école privée, où il a tué une adolescente et blessé deux personnes, avant d'être arrêté par la police.
Les autorités ont arrêté l'assaillant, a indiqué le gouverneur de l'Etat d'Espirito Santo, Renato Casagrande qui a décrété trois jours de deuil.
"C'était un élève de l'école (la première) jusqu'au mois de juin, un mineur de 16 ans. Sa famille l'a ensuite fait passer dans une autre école. Nous savons qu'il était sous traitement psychiatrique", a précisé le gouverneur lors d'une conférence de presse.
"Il cherchait à tuer des gens. Il a tiré sur les premiers qu'il a vus", a-t-il dit.
Selon lui, plusieurs personnes parmi les blessés sont encore en danger en raison de la gravité de leurs blessures.
"Nous prions avec ferveur pour leur rétablissement", a poursuivi M. Casagrande.
Le commissaire de la police civile Joao Francisco Filho a souligné devant les journalistes que l'assaillant "n'avait pas de cible précise" lorsqu'il a ouvert le feu, et qu'il préparait, à ses dires, l'attaque depuis "deux ans".
Les deux armes qu'il a utilisées appartiennent à son père, un policier, et l'une d'elles était l'arme de service de ce dernier, ont déclaré les autorités. Elles enquêtent pour savoir si le jeune homme avait des liens avec un ou des groupes extrémistes.
Il a été arrêté chez lui quelques heures après les faits et, avec la coopération des parents, s'est rendu sans résistance.
Des enquêteurs ont été vus évacuant des corps dans des cercueils et les placant dans des camions garés à l'extérieur de l'école dont le périmètre considéré comme une scène de crime avait été bouclé par des rubans, selon un photographe de l'AFP.
"Tragédie absurde"
Le président élu Luiz Inacio Lula da Silva a qualifié cette tuerie de "tragédie absurde" sur Twitter. "J'exprime ma solidarité aux proches des victimes et je soutiens le gouverneur pour une enquête", a dit le leader de gauche qui prendra ses fonctions le 1er janvier.
Lula a fait campagne contre l'explosion spectaculaire des permis de possession et de port d'armes à feu sous le mandat du président d'extrême droite sortant Jair Bolsonaro depuis janvier 2019.
"La politique des armes à feu doit être revue", a tweeté de son côté le sénateur Wellington Dias, un allié de Lula.
"Ces quatre dernières années sont celles où nous avons vu le plus d'attaques dans des écoles, au moins depuis le début des années 2000", a déclaré à l'AFP Bruno Langeani, chef de projet à l'Instituto Sou da Paz. "Nous sommes persuadés que le meilleur accès aux armes ces dernières années sous le gouvernement Bolsonaro a facilité ce type d'attaques", a-t-il ajouté.
Selon l'ONG Forum brésilien de sécurité publique, il y a environ 4,4 millions d'armes détenues par des particuliers dans ce pays de 215 millions d'habitants.
Les fusillades dans les écoles restent toutefois relativement rares au Brésil, un immense pays pourtant violent.
La plus meurtrière a eu lieu le 7 avril 2011, quand un homme de 24 ans a ouvert le feu dans son ancienne école de la banlieue ouest de Rio de Janeiro, tuant 12 élèves, avant de se suicider.
Plus récemment, le 13 mars 2019, deux anciens élèves ont tué par balle huit personnes et blessé 11 autres avant de se donner la mort dans un collège de Suzano, dans la région de Sao Paulo.