You can fly into the Oaxaca city airport (OAX) from Mexico City. Oaxaca also receives one daily flight from Houston on United, as well as a daily flight from Los Angeles on Volaris, if you prefer to avoid the Mexico City airport and fly direct from the United States. If you are traveling from the Mexico City airport, AeroMexico has several flights daily, and discount airline Interjet has at least one flight every day.
If you decide to travel to Oaxaca by bus, you have two options. You can head to Mexico City's TAPO bus station, or if going from the Mexico City airport, take a bus to the Puebla bus station CAPU from the airport and take another bus from there. In either case, check bus schedules ahead of time on the Ticketbus website, but there's no need to reserve in advance unless you're traveling during Easter week or over the Christmas break.
The ADO bus company has frequent bus departures from TAPO to Oaxaca. Be sure to choose a direct bus. Options include first class, which is the most basic service offered by ADO, but quite comfortable and with toilets and movies shown en route. ADO's GL buses are slightly roomier and the ADO Platina is the most comfortable, with only three seats across and seats that recline almost fully. The AU bus company also has several buses per day to Oaxaca at a cheaper price, but without toilets or movies on the bus.
If you opt to drive from Mexico City to Oaxaca, the drive can take between four and a half to six hours depending on traffic and road conditions. Your best option is to take the toll road. The first leg of the trip is from Mexico City to Puebla. This is where you will likely encounter the most traffic. As you approach Puebla, you will see signs that indicate the way to Oaxaca.