Add the onions to a stock pot with two tablespoons of olive oil. Stir with a wooden spoon over medium heat until the onions brown. The more you can brown the onions, the more flavor they will add. I like to get a full caramelization which can take 25-30 minutes. If you want to save some time, it still will taste great with a light browning (5-10 minutes).
Stir in the garlic, cumin, paprika, cayenne pepper, and black pepper.
Add the two cans of tomatoes. Break up the tomatoes with a potato masher or a fork.
Bring to a simmer and cook for 15 minutes.
Stir in the butter until melted
Add 1 cup water, and bring back to a simmer
Take the pot off the heat, and use an immersion blender to blend to the texture you prefer. If you leave it slightly chunky, it will work as a pasta sauce or soup, but a like it blended until smooth.