In the past the least expensive means to call the U.S., Canada or Europe from Mexico was purchasing telephone calling cards which are readily available almost anywhere. They are used from a pay phone which can be easily found and are readily available.
Now, however, there are many "locales" set up for calling long distance that use VOIP -- telephony -- all over the country. In San Cristobal de las Casas there are many -- one is on the pedestrian street (20 de Noviembre) -- it costs two pesos a minute to call the U.S., Canada and three to Europe. These are excellent prices unless travelling with a laptop or blackberry and have the use SKYPE. Also, 800 numbers can be called from these phones. They may be advertised as "llamadas larga distancia" or "locutores".
Another method would be to have a calling card from a U.S. telephone service, such as MCI or your telephone service provider. You will find that they have a 1-800 number for Mexico to use their service. You can call from a pay phone (you have to deposit coins), or ask your hotel for a line to make an "800" call.
Indiscriminate phoning to the United States, Canada or Europe can be very expensive! At some resorts, rates can be as high as $2.00 per minute to call the U.S. or Canada! In Mazatlan Christine's European Hair Salon on Av. Camarne Sabalo, next to the Subway Restaurant, offers calling cards and use of their phones to call. While it may be a little inconvenient to have to go into the Golden Zone area every time you want to make a call, it's much cheaper! Another location there is Heather's Place, Av. Camarone Sabalo 300, across from Oceano Palace.
For a longer stay it may be worth investing in a local cell phone. They can be had at any Telcel or Moviestar store and cost around 400 pesos and that includes 300 pesos of airtime.