The 18-year-old gunman opened fire at Robb Elementary School in the city of Uvalde before he was killed by law enforcement, officials said, according to BBC.
Investigators say the suspect was armed with a handgun, an AR-15 semi-automatic rifle and high-capacity magazines.
The teenager is suspected of shooting his grandmother at the start of the rampage.
Local media report he may have been a high school student in the area.
Uvalde Consolidated Independent School District Chief of Police Pete Arredondo said the shooting began at 11:32 local time on Tuesday, and that investigators believe the attacker "did act alone during this heinous crime".
Texas Governor Greg Abbott said the shooter, whom he named as Salvador Ramos, abandoned a vehicle before entering the school to "horrifically, incomprehensibly" open fire.
One of the adults killed was a teacher, who has been named in US media as Eva Mireles. Her page on the school district's website said she has a daughter in college and loved running and hiking.
The Associated Press news agency reports that a US Border Patrol official who was nearby when the shooting began rushed into the school and shot and killed the gunman, who was behind a barricade.
Two border agents were reportedly shot in an exchange with the gunman. One agent was shot in the head, officials say, adding that both were now in a stable condition in hospital.
A Hospital posted on Facebook earlier that 13 children had been taken to the hospital "via ambulances or buses".
A 66-year-old woman and a 10-year-old girl were in a critical condition at a hospital in San Antonio, University Health hospital officials say.
School shootings have become recurring emergencies in the US, with 26 recorded last year, according to EdWeek, an education trade publication.
MP/PR