In a bowl, soak the rice in hot water for about 5 minutes. Rinse with cold water and drain very well.
While the rice soaks, purée the tomatoes in the blender along with the onion, garlic and salt. Pass through a strainer and reserve.
Heat the oil in a thick heavy skillet (if you have one with a transparent lid, pick that one) over medium high heat until hot but not smoking. Add the rice and sauté, stirring often, until the color of the rice changes to a strong milky white and it shows more resistance and makes a heavier sound as you stir it around, probably about 3 to 4 minutes.
Pour in the strained tomato purée, mix it gently and let it cook until the color of the purée has darkened, thickened and is mostly absorbed, about 3 more minutes.
Stir in the chicken or vegetable broth and lime juice, give it a gentle stir and top with the parlsey sprig, the diced carrots, peas and serrano chiles, if so desired.
Let it all come to a boil, and when it does, put the cover on and reduce the heat to low and cook for about 20 minutes. Here is where that transparent lid becomes so handy, as you can see what is going on inside the pot without losing steam. You know the rice is ready when it is cooked through and tender, most of the liquid has been absorbed, but there is a lot of moisture in the pot. If the rice is not yet tender and the liquid has dried up, add a couple tablespoons more water, cover again and let it cook for a couple more minutes.
Let the rice sit covered for at least 5 minutes before you fluff with a fork and serve. You may also make it beforehand and reheat it covered over low heat with a tablespoon of water.