I would use it, if if have certain override classes. but those have to be semantically defined.
.forceNoBorders {
border: none !important;
}
so unique imperative compositions to override certain behaviours. I personally prefer to split CSS between layout and positioning.
But in my opinion every !important that is not in class or is based on a inheritance chain and such -> for example
#my-container {
some-property: some-value !important;
}
.my-container > div.class > span {
some-property: some-value !important;
}
is to my eyes only valid if you don't have access to the source CSS or HTML code. it's still ugly but it's allowed .... still all those definitions should be written in a "shame.css" (an idea I picked up from the wearedevelopers conf) so we know the person who writes it is aware it's not okay to write such styles.