It's not so much about not using classes. They are necessary. It's more about not using them when they aren't necessary, and not using them to say what things look like.
MDN's tutorials do a decent job of it... but I can in a short reply give you a few simple rules that covers most all of it.
1) Don't use classes to say what things look like. Say what they are or why they MIGHT get style. Remember HTML is for MORE than just visual user-agents.
2) Use classes or ID's to group like tags or component style structures for style.
3) Leverage selectors and combinators to style your semantic structures.
4) If every child element inside another is getting the same class, NONE of them should have classes as that's the opposite of DRY. Style off the nearest parent instead.
That's the basics, the four points and ways of doing it "right" and in all but the rarest of corner cases? You see code that violates this it's incompetent rubbish.
I'm gonna toss this on my list of articles to write. I've touched on it in a lot of different articles, but never had it as the actual topic.