The shooting happened shortly after 14:00 local time (19:00 GMT) at Richneck Elementary School in the city of Newport News, Chief Steve Drew said.
It is unclear how the child obtained the gun, but Mr Drew said the incident was not “an accidental shooting”.
The teacher – who has not been named and is said to be in her 30s – was left with life-threatening injuries.
She was taken to a local hospital and is being closely monitored by doctors. The incident took place in a first grade (ages six to seven) classroom after an altercation between the pair.
But Mr Drew emphasised that the shooting had been an isolated incident and stressed that officers “did not have a situation where someone was going around the school shooting”.
Officials said that while the school – which has around 550 students – had metal detection facilities, students were checked at random and not every child was inspected.
Police declined to name the weapon used in the incident, but said the boy had used a handgun.
School District Head Dr George Parker said officials would “be looking at any instance that may have occurred that may have caused this incident”.
“This is terrible, something like this should never occur,” Dr Parker added. “We want to ensure nothing like this happens again.”
He said the school would be closed on Monday, and pledged that students and parents would be offered support to help them deal with the traumatic event.
Mayor Phillip Jones – who took office just three days ago – said the shooting marked “a dark day for Newport News”.
“We’re going to learn from this and we’re going to come back stronger,” he told reporters.
Virginia Governor Glenn Youngkin said he had offered assistance to local officials, adding that his administration was “ready to help in any way we can”.
“I am continuing to monitor the situation and am praying for the continued safety of all students and the community,” he wrote on Twitter.
Newton News is a city of around 180,000 people and sits about 70 miles (112km) to the south of the state capital Richmond.