Make the roux. Heat the oil in a large skillet over medium heat. Whisk in the flour, chili powder, paprika, and cumin, and cook for 1 minute, whisking constantly.
Add the liquid. Slowly whisk in ½ cup of the water or chicken broth until smooth and a thick paste forms.
Add the remaining ingredients. Gradually whisk in the remaining water or broth, followed by the tomato sauce, tomato paste, onion powder, garlic powder, cinnamon, salt, and pepper. Whisk until smooth and well combined.
Simmer the sauce. Bring the sauce to a boil, then reduce the heat to medium-low. Simmer for about 5 minutes, whisking frequently, until thickened. If the sauce is too thick, whisk in a little additional water or broth until it reaches your desired consistency.
Season and store. Taste and adjust the seasonings as needed. Remove from the heat and let the enchilada sauce cool before transferring it to an airtight container or jar. Refrigerate for up to 1 week.
Notes
Storage: Any leftover enchilada sauce can be safely stored in the fridge for up to a week, or consider freezing it for up to 3 months. Let the sauce cool to room temperature before putting it in a mason jar. Leave some space at the top for the sauce to expand, and avoid fully tightening the lid until it's completely frozen. Alternatively, you could use a freezer bag; squeeze out any excess air before sealing it.
Variations: While chili powder, cumin, and garlic powder remain key ingredients, feel free to alter the remaining spices in accordance with your taste preferences.