Travel in Patagonia is slow and unpredictable, and getting a bus out of Ushuaia requires that you book your ticket in advance, directly from the agencies. You cannot book online. We were stranded in Ushuaia for several days waiting for a bus to Puntas Arenas (12 hours). There are no direct busses to Puerto Natales, you have to catch a connecting bus from Punta Arenas (3 hours). What’s worse is that the agencies often overbook the buses, so unless you’re given 2 real bus tickets, don’t assume that you actually have a reserved seat on a connecting bus. We found out the wrong way!
These companies offer service between Ushuaia and Punta Arenas. Expect to pay about $100 in total for the two legs of the trip.
Buses Pacheco http://www.busespacheco.com/rutas.htm
Buses Barria http://busesbarria.cl/destinos.html
Tecni Austral http://www.tolkarturismo.com.ar/frecuencias.ht
Warning! They tend to keep these buses very toasty, so lay off on the thermals and take plenty of water.
If you’re pressed for time, it might be worth skipping Ushuaia, and instead flying in to Punta Arenas as your entry point for exploring southern Patagonia: Puerto Natales and the Torres del Paine, El Calafate, El Chalten.
For about $450, you can book a multi-trip itinerary: Buenos Aires – Ushuaia and El Calafate – Buenos Aires. You would then bus from Ushuaia – Puerto Natales (15 hours) and from Puerto Natales to El Calafate (5/6 hours).
If you’re flying in from Santiago, Chile, a return ticket to Punta Arenas is much cheaper, only about $120, because Chile has a low cost airline. Good on them! You could then catch the 3 hour bus from Punta Arenas to Puerto Natales, visit the Torres del Paine and head on a 5/6 hour bus to el Calafate to see the Perito Morena Glacier. Return to Punta Arenas to catch the flight back to Santiago. The scenery in these parts is spectacular, so 5-6 hours is manageable.