In a saucepan, warm the oil and butter over medium heat. Add the onions, serrano, and garlic and sauté until everything is softened, about 10 minutes. Mix in the remaining ingredients and bring the sauce to a simmer. Cover and cook for 35 to 40 minutes. Allow the sauce to cool briefly.
Strain the sauce and puree the solids in a food processor. Return the pureed