I live in Tucson, AZ. We have tons of mexican restaurants here--some make excellent rice and some really stink. Here's the technique I use at home.
Preheat oven to 325° F. In an ovenproof pan, heat oil and add rice. Cook until rice is just golden, stirring constantly to avoid burning. The amount that you brown the rice is a matter of taste--the darker the nuttier (unless you burn it, then it's bitter). Add the onion, garlic, liquid and salt. Stir until the mixture just starts to boil. Cover the pan fairly tightly and place on the center shelf of the preheated oven for 25 to 30 minutes. Remove the lid (being careful of the steam) and fluff the rice with a fork.
I usually add the onion a minute or so after putting the rice in the hot oil. This way it can turn translucent while the rice browns. Be careful, though, the rice can start to burn as well.
If it's available in your area, try substituting a tablespoon or so of El Pato tomato sauce for part of the tomato sauce. This is a spicy tomato sauce that adds a little zing to the rice.
Some restaurants cut 1/4 inch wide rings from unskinned roasted green chiles (Anaheim or New Mex.) and add them. What you have when you're done is a light flavor of green chile and the little skin rings for decoration (the fleshy part cooks into the rice).