Go to a competitor. It can be a farce sometimes, when people from two different companies across the street essentially just replace each other for 20% more, but doing the exact same job. And then two years later they repeat and switch chairs again for another 20%.
Maybe there's some benefit to the companies in having stuff like this happen (learning a bit more about the competition), but the negative consequences that result from the loss of talent and internal knowledge seem to be avoidable in this situation if they just worked things out over pay.
Just go looking for a different job at all the top companies in your area. Some of them will offer you a job, and when negotiating pay, ask for 20% more than what you're making now. Simple as that.
This is a lot harder than you make it sound. I have worked in sectors where people would worry that asking that question would terminate the interview - hospitality for one.
What do you have to lose? If there are a lot of companies interviewing (high demand), you just interview at a couple of them. When they ask how much you expect, tell them 20% more than what you are making now. If they say that can't be done, just politely say that it doesn't make sense for you to join at that time, but perhaps in the future another role will open up.
Then, at least you can go home knowing that you are already making what the market can bear, and you aren't leaving money on the table.
So my area doesn't have very many good companies for tech workers. There aren't a lot of tech jobs open here for intermediate devs. Most of the ones I do see are showing estimated salaries 10-20% less than mine already.
I feel like this is easier said than done.