I don't have (nor have I claimed to have) the absolute solution on how exactly to do it, but if the need is not snuffed out, the problem will always exist in some form or another.
A fundamental short-term source of the problem is that most businesses in this country are so poorly run that they would go out of business if they had to pay competitive wages. Every well run company I have come across was making enough money that hiring americans and paying competitive salaries was the least of their worries. The reason high salaries are considered competitive is beacuse the best companies actually derive that much benefit to the bottom line by employing people with the skill they need.
The poorly run companies only extract a small portion of that productivity and have to make up the difference somewhere on the cost side- either by charging the customer more, paying the worker less or both. Remember that a poorly run company will often not benefit from high quality workers since those workers will either leave quickly or they will be disruptive as they attempt to fix the corporate culture (at which point they will usually give up in frustration and leave anyway).
Example, company I know of (no names) that basically develops software. However, their products were developed in such a way that about 70 percent of the company is dedicated to placating customers and fixing the endless stream of bugs. If we didnt have h1b programmers and illegal maintenance people, the company wouldnt make a profit. In other companies, I've seen lack of profitability because they are in a mature market with low margins, or a an profitable market with a bad business model.
The solution is one of the following:
-allow americans to work for lower wages (the free market approach) while clamping down on hiring of illegals
-let the poorly run companies go out of business
The problem of course is that americans have to live in america, while mexican migrants are only working to afford food and clothing in their gualajara hovel. The cause, in my opinion, of the problem is that companies and mexicans both want to work, but they cant do it in mexico. Why is this? Because the mexican government steals everything that isnt bolted down.
The real long term solution is to invade mexico, overthrow the govenment and let them start over from scratch, with a heavily armed citizenry. A non-corrupt mexico would be a true paradise to do business in for both the workers and the companies. I guess teh mexicans just feel "if things are so good across the border, why risk getting shot to change mexico?"