The 18-year-old perpetrator shot his way past two police officers and barricaded himself into a classroom to kill 19 children and two teachers at Robb Elementary School, witnesses said.
Anguished bystanders begged the police to intervene while a gunman barricaded himself into a classroom and opened fire on primary school pupils in Texas, it has emerged.
The atrocity on Tuesday, which saw an 18-year-old gunman massacre 19 children and two teachers before being shot dead himself, was the worst school shooting the US has seen since Sandy Hook in 2012.
Eyewitnesses report that Salvador Ramos crashed his truck into a ditch, grabbed his AR-15-style semi-automatic rifle and shot at two people outside a nearby funeral home before approaching the school.
Officials say Ramos "encountered" a school district security officer outside, though there were conflicting reports from authorities on whether the men exchanged gunfire.
After running inside, he then shot at and injured two Uvalde County police officers who were outside the building, according to the Texas Department of Public Safety.
After entering the school, Ramos came into a classroom, locked the door behind him and murdered the children and teachers inside one by one. The Department's Lt Christopher Olivarez described the act and its perpetrator as "complete evil".
But officials also report that a full 40 minutes to an hour elapsed between the altercation with the security officer and Ramos being killed by a tactical team member. An official told AP that Border Patrol agents had trouble breaching the classroom door and had to get a staff member to open the room with a key.
Juan Carranza, 24, who saw the scene from outside his house, said onlookers had been shouting at police outside: "Go in there! Go in there!"
He added that, in his view, the police should have entered immediately without waiting for backup. "There were more of them. There was just one of him."
Slain youngsters remembered by loved ones
Grief engulfed the community and observers across the US as the details emerged on Wednesday.
Among the dead were Eliana Garcia, an outgoing 10-year-old who loved to sing, dance and play basketball, and Xavier Javier Lopez, who had been eagerly awaiting a summer of swimming.
Vincent Salazar said his 10-year-old daughter, Layla, also loved to swim and dance to TikTok videos. She was fast, too, winning six races on a school sports day. He posted a photo on Facebook of Layla showing off two of her ribbons.
Each morning as he drove her to school in his pickup, he said, he would play "Sweet Child O' Mine" by Guns N' Roses, and they'd sing along. "She was just a whole lot of fun," he said.
Manny Renfro lost his 8-year-old grandson, Uziyah Garcia, in the shooting. "The sweetest little boy that I've ever known," he said. "I'm not just saying that because he was my grandkid."
As pictures and memories of the youngsters circulated, "You can just tell by their angelic smiles that they were loved," Uvalde Schools Superintendent Hal Harrell told reporters, fighting back the tears.
Texas has been the site of some of the deadliest shootings in the US over the past five years. The shooting came days before the National Rifle Association annual convention was set to begin in Houston.
"I just don't know how people can sell that type of a gun to a kid of 18 years old," Siria Arizmendi, the aunt of victim Eliana Garcia, said through tears. "What is he going to use it for but for that purpose?"
Dillon Silva, whose nephew was in a classroom, said he and his classmates were watching the Disney movie Moana when they heard several loud pops, and a bullet shattered a window. Moments later, their teacher saw the attacker stride past. "The teacher didn't even have time to lock the door," he said.
Javier Cazares lost his nine-year-old daughter Jacklyn in the massacre. A "firecracker" who stood up to bullies and was "full of love", Jacklyn was with a group of five girls, he said, including her second cousin, Annabelle Rodriguez, who were a tight group of friends.
"They are all gone now."