When repeated gunshots were heard, teachers herded students from one room to another, trying to move away from the sound of the shooting, according to Reggie Graves, a 14-year-old pupil at the school.
He said some students crouched under desks.
One teacher, Diane Schwanz, said the gunman tried to break down a door to get into her classroom.
"I just got on the floor and called the cops," Schwanz told the St Paul Pioneer newspaper. "I was still just half-believing it."
Pupil Ashley Morrison said she heard shots, then saw the gunman's face peering though a door window of a classroom where she was hiding with several other students.
After banging at the door, the gunman walked away and she heard more shots.
"I can't even count how many gunshots you heard, there was over 20.
There were people screaming, and they made us get behind the desk," she said In another room, where 25 pupils were hiding, the Red Lakes schools chief, Stuart Desjarlait, who happened to be visiting, held the door shut with the help of a pupil, calling the police on his mobile phone as the gunman opened fire. But the bullet did not go through.
The governor of Minnesota, Tim Pawlenty, said it appeared the school had "very rigorous security".
"It looks like you had a very disturbed individual who was able to overcome a lot of precautions to do a lot of damage."
The school was evacuated after the shootings and locked for the investigation.
Red Lake high school: www.paulbunyan.netrlschoolshs.htm