I've only just seen this thread. How awful - your poor ds. Glad your he managed to get home safely today and that the witnesses have identified the other child.
My ds1 (12, ASD) was badly bullied last year and very little was done, despite us going to the school repeatedly. Finally we realised the only way to make it stop was for us to get tough with the school (it was happening both at school and on LA transport to and from) as the only alternative was to remove ds from the school, which would have been a classic case of 'punish the victim'.
We brought in the Local Authority (who pay for ds's statement and place as it's an indie school) and went straight to the Head Teacher, demanding a face to face meeting (which he chose to send the head of year to in his place
) and we kicked up such a stink that they had no choice but to act and the other boy was moved into a different house group away from ds and put on a final warning re expulsion. Thankfully, there haven't been any more incidents since then.
In your case I would be calling 111 and asking for advice from the police, as it sounds a lot more serious and physical than what my ds went through and the other boy's behaviour was clearly against the law.
I am also rubbish at standing up for myself, but had to keep reminding myself that it was ds I was standing up for, not me and he needed me to do it, because he couldn't do it himself and also that if we didn't stop him, be'd just move on to another victim when he'd had his fun and finally broken ds1. Not sure if that will work for you - but it helped me to be braver than I normally am.
I hope you manage to find a way of dealing with the bully that will stop him in his tracked and that your ds can get past the trauma.