Preheat broiler. Destem and core the tomatoes, then place in a broiler pan, along with the serranos. Broil everything until blackened on both sides. Romove from oven and let cool slightly.
Stem the serrano peppers, then cut in half lengthwise. Scrap out the veins and seeds (optional). Place in the blender along with the tomatoes, garlic, and salt. Blend until smooth.
Place two tablespoons of oil in the skillet over medium-high heat and fry the onions until translucent and starting to brown around the edges. Reduce heat to medium.
Add the tomato puree to the skillet, being careful for pops and splatters, stir into the onions, and cook for 5 minutes.