I can tell you what worked for me, but I can't promise that it will work for others. Basically, I just stopped giving a shit about what other people thought, especially most other software engineers.
I stopped caring about getting promoted and doing things just for visibility. If I see something that needs to be done, I make sure it gets taken care of. I ask intelligent questions in meetings and have almost always put way more thought into anything we're working on than anyone else so I'm able to have good questions and concerns. I focus on delivering for the business and not impressing other software engineers.
The key, and this is the one piece of bullshit unfortunately, is to make sure your manager and ideally your manager's manager know about what you are doing. I mostly accomplish this during my one-on-one and by speaking up in various meetings we are in. I also work for a company where talking directly to senior management and even executives is truly accepted.
The thing is, most people are followers and need to be told what to do. Become the person that knows what needs to be done and makes sure things don't fall through the cracks. Unless you are looking to go into management, focus on the technical and driving projects to completion, but avoid trying to manage other people. Eventually if you build enough respect from the team you can get them to do what is needed and your can build enough trust with your manager that you can direct them to deal with problem employees.
The downside to all of this is that I'm pulled into absolutely everything because everyone wants my opinion and I'll actually make decisions for everyone instead of meeting about it 15 times. I end up doing very little actual development these days, but I'm paid extremely well and don't have to manage people. In the end this doesn't bother me that much because I see corporate software development as a different activity from the one I actually enjoy.