It's not perfect...
...but it's better. Free Sofware (not quite identical to Open Source, incidentally), has positive beneficial effects even if we don't quite reach utopia. For one, it allows an escape route. Witness MySQL - when there were irreconcilable differences, developers forked it. Like a Hydra with a head cut off, two rise in its place. Fragmentation can be bad, but as an alternative to a company buying something out to kill it, for example, or a tyranical lead developer countenencing no breaking away from their vision, it is a positive result.
Secondly, whilst a company can take GPL'd code in house and keep their refinements to themselves, if they want to sell or work with others, they have to give back. (Yes, you can tip-toe around the edges with binary blobs and other fudging, but often this isn't feasible). So the GPL forces the production of a kind of coding Commons. Which is a good thing.
Thirdly, it reduces the barrier to entry. If you have to write a web-server from scratch to underly your product, or you have to licence one from a company that would be your natural rival, then as a small player you may just give up and go home. But if you could, say, just create it as an Apache module, maybe you can get into the market. And competition is good.
Yes, sometimes GPL has a downside for the self-interested. Maybe that Apache module has to be Open Source and others would try selling support for the module in competition with you (though you would have the edge). But it's optional - you can choose to participate in the Commons reaping the benefits as well as paying the costs, or you can go your own way and do everything from scratch. Point is, without GPL, there is only the latter and lack of choice is bad.
Finally, it lowers the barrier to entry for all those individuals which are the future of programming. They can grab Python or PHP or the GCC compiler, and get stuck in. Can you imagine a world where all programming language implementations were proprietary? It wouldn't be a complete disaster because companies would compete with each other with free versions because they wanted people to learn theirs, but it would certainly be worse than it is.
Could the Free Software world be better and are there abuses? Yes. Is it still a great positive force in the world of IT? Yes. I got into Open Source over a decade ago and I am not disillusioned yet.