Place the rice in a large heat-proof bowl and pour in hot water to cover. Stir once, then let stand for 15 minutes.
Transfer to a strainer over the sink, rinse under cold water, then drain again. Shake the strainer well to remove any excess water. Set aside to dry slightly. If using frozen peas, please defrost them ahead of time. For this rice, I used ½ cup of peas. This is a personal choice, you can also add carrots if you like.
Heat the oil in a large, heavy pan, add the rice. it should sizzle as it touches the oil. Cook over medium heat until it starts to become a delicate light golden brown. This step will take about 6 to 8 minutes. Stir occasionally to ensure that the rice does not stick to the bottom of the pan.
Carefully tip the pan and remove the excess oil using a spoon.
Meanwhile, place the tomatoes, garlic, and onion into a food processor or blender, process until smooth.
Add the tomato mixture to the rice and stir over medium-high heat. Sometimes, I strain the tomato sauce before adding it to the rice.
Keep cooking until all the liquid has been absorbed making sure it doesn’t stick to the bottom of the pan. It takes about 3 minutes for this step.
Stir in the broth and optional vegetables (carrots, peas, serrano, and cilantro) and salt to taste. Bring to a boil, about 2 minutes, and then cover the pan and cook over low heat until all the liquid has been absorbed. About 12-15 minutes.
Using a fork, carefully dig to the bottom of the rice to see if any moisture remains; If so, continue cooking over low heat for a few more minutes, still covered, until tender. Remove pan from heat, without uncovering it, and let it stand for 10-15 minutes, to give the rice a chance to continue steaming. Using a fork, lightly fluff up the rice and serve.
Some cooks in Mexico will never stir the rice when it is cooking because it will become mushy. I am one of them.