The !important
flag is meant for quick testing only. Using it as a permanent solution tends to cause problems later and thus should be avoided.
The best practice for overriding css is simply to ensure that the specificity of your custom css rule either matches or exceeds the specificity of the corresponding Bootstrap rule. And of course, the custom css must be loaded after Bootstrap css.
So, in this particular case you could use a rule that looks like this:
.navbar-light .navbar-nav .nav-link {
color: red;
}
More info about CSS specificity:
https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
And: CSS Specificity Calculator