Oaklands High School pupils had seen the 14-year-old boy play with the gun during break time.
"He brought the gun to school and had it in his bag during class time. At first break he and some of his friends were playing with it. I saw him in the taxi playing with the gun after school," an unidentified Grade 11 pupil told the paper.
Police spokesperson Lieutenant Colonel Norman Joseph said the boy and two other pupils were returning home in the minibus taxi on Tuesday afternoon.
"It was then that the suspect produced a firearm and shot the two learners in full view of shocked commuters," he said.
A Grade 8 pupil was shot in the hand and leg, and a Grade 10 pupil in the right leg.
Groote Schuur Hospital spokesperson Alaric Jacobs said the younger pupil was discharged. The other teenager was in a stable condition after undergoing surgery on Wednesday.
According to the report, the boy was expected to appear in the Wynberg Magistrate's Court on Friday.