Одной из альтернатив является использование универсального селектора для создания более конкретного правила, которое вступит в силу, если узлы не являются прямыми дочерними элементами:
div p {color: red;} // Takes effect if there's a <p> child at some level
div * p {color: black;} // .. but this'll be true if it's not a direct child
Однако вам нужно остерегаться конфликтов специфики. div * p
будет более конкретным, чем другое правило, которое работает, например, с абзацами в целом.