Good projects speak for themselves. Use cases, code design, documentation, commit history, ... should be setup well right from the beginning. Then simply speaking with everybody who might be interested in your project should start spreading your project into the wild.
There seems to be ample evidence against this idea, namely that I cannot think of a single commercial product that is not in some way promoted. Surely, there would be a few products that are good enough to get the best return on investment from allocating all resources to improving the product? But even cocaine cartels run CRM operations.
Yeah, I'm sure there are a few companies that don't spend money on advertisement. But those are probably allocating quite a lot of resources to making sure you know they're not advertising.