It is actually very simple.
I ran the software engineering department at a previous job. Despite my and my boss's vehement objections we outsourced our entire software development team to India to reduce costs. I was to manage them remotely.
We made it work for a while, but in the end we did it by replacing 5 US developers with an office of about 20 in India (15 of whom were developers, rest were support staff like HR, LAN admin, Office manger, etc.) and I was able to show to our CEO that the cost of the India office was about the same as our US development team with just 5 people.
We shut down the India office, and retained 4 of the best developers there, paid them US salary (high five figures to six figures USD annually) as individual free lance consultants, and had them work remotely. I required that they get paid a US salary, if they weren't worth a US salary then we might as well hire someone in the US. We then hired a few developers in the US who would also work remotely (Our company was growing and so were our software development needs). The point was to higher few good developers instead of a lot of cheap ones, regardless of location.
Years later, four of the five developers from India continue to work for that company as freelancers, earning a US wage in India. The 5th one quit to head the engineering department for a major indian website.