In a small stockpot or large heavy saucepan over medium heat, add the oil.
Add the onion, stirring occasionally until it begins to turn golden, 6 to 8 minutes.
Stir in the cumin, cayenne, smoked paprika and turmeric.
Cook, stirring frequently until fragrant, 1 to 2 minutes.
Stir in the tomatoes and increase the heat to medium-high (be careful, as the mixture will sputter).
Stir vigorously for 2 minutes.
Stir in the water, remove the pot from the stove, and allow to cool slightly.
Transfer the tomato sauce to a blender. Blend until smooth.
Return the sauce to the pot.
Add the yoghurt and salt, stirring until well combined.
Gently place the meatballs into the pot, leaving some space between each meatball.
Add enough boiling water from the kettle to just cover the meatballs.
Bring to a low boil, reduce the heat, cover the pot, and simmer for 25 minutes.
Gently turn over each meatball.
Replace the lid and simmer for 20 more minutes.
Taste and add salt, as needed.
Sprinkle with lots of fresh tarragon or your favourite herb and serve alongside basmati rice or bread.