Since this is a case of cluster/group (=class) assignment telling the difference between what is an intervention effect and what is a cluster/class effect is pretty difficult/impossible. Maybe one class just has a better teacher, a better atmosphere, a mover class room, richer parents etc. - there is no really reliable way around that unless you had a perfect model of how the world works that can somehow account for all these differences.
That's why one ought to randomize a larger number of classes to each approach. In that case a ordinal logistic regression with a random cluster effect and a random subject within cluster effect would be a reasonable model, as long as there is a good number off clusters. Presumably there is some GEE equivalent of that, too. Your current model ignores how the treatment assignment was done and pretends that a randomization happened at the individual pupil level (according to a move quote from Cornfield in 1978 that's an exercise in self deception).
The choice between GEE and random effects is mostly around whether you want your coefficients to be cluster specific (i.e. "by how much would this approach improve the outcome for a particular class?") or overall ("if we implemented this as a policy how would the average outcome across all classes of the studied mix of types change?").
With a small number of clusters it can be preferable to form a cluster level average (e.g. average numerical equivalent of the ordinal score, first across time within patient then across patients), and then one compares that sickle number across clusters (in your case two values, one per intervention group - which illustrates your problem). Of course with an ordinal scale such a simple average is non-ideal.