The best way to buy cars is option out exactly what you want and get the invoice price. Personally I've used carsdirect.
Now with invoice price in mind, send emails to all dealers in your area. Simply explain you want X car @ X price and that you are emailing many dealers and will move forward with the dealer that has the best deal. Its important that you compare cars across dealers by the difference from invoice price as small options will change the price of the car slightly.
As you get quotes, you can forward those to other dealers if they have the specific color you want, etc.
Once you lock in a price, take care of financing through your local credit union. Show up to dealer, decline all warranties/addons, sign the papers making sure price is the same you agree, and off you go.
Just did this about a month ago and it worked out great. Remember to calculate exactly how much DMV fees will be(usually around 2-3 hundred dollars) which will likely be on top of the price you negotiated unless you specify otherwise.
Don't tell them you have a trade in until you show up at the dealer to buy. Then you can negotiate the trade in value without them trying to move numbers around with the car price.
I like this approach because there is zero advantage to negotiating the car price in person. Via email you can take your time to research and also field many more offers and quotes than you would ever be able to if you visited each dealer physically.