Heat oil and margarine in a small skillet or wok over medium high heat. Add onion and saute until very brown, 10 to 15 minutes. (Note: This is an important step; if onion is not cooked well, sauce will taste funny.)
Add ginger and garlic to onion and saute for an additional 2 minutes. Process onion/ginger/garlic mixture in food processor until smooth. Do not rinse food processor.
Place onion mixture in a large saucepan. Stir in the cinnamon, black pepper, coriander, cumin, turmeric and cayenne pepper and cook over low heat until mixture is thick and has the consistency of a paste.
Puree tomatoes, chile peppers and cilantro in food processor until smooth. Add to onion mixture and stir well over low heat, cooking off moisture from tomatoes and cilantro. Add yogurt a little bit at a time, stirring constantly to avoid curdling.
Blend the whole mixture in food processor to puree it (for a very smooth sauce). Return to saucepan, add water and increase heat to high; bring sauce to a rolling boil. Cover saucepan and boil for 3 to 5 minutes. Reduce heat and simmer until desired consistency is reached.
To serve with meat, cook the meat first separately, then simmer for 5 to 10 minutes in the sauce before serving over rice or with bread.To serve with vegetables, steam raw veggies first 4 to 5 minutes, then simmer for 5 to 10 minutes in the sauce before serving.
Source: Read Full Article