Heat 1 tablespoon oil in a large sauté pan over medium.
Add cardamom, cinnamon and cloves; cook 30 seconds. Add onion and 1 teaspoon kosher salt and cook, stirring frequently, until starting to soften, 4 minutes.
Add garlic, ginger, and serrano; cook 2 minutes.
Stir in tomato and cook 1 minute.
Add ½ cup cilantro and turmeric and cook 3 minutes; deglaze with vinegar, scraping up any browned bits. Cook until evaporated then remove from heat.
Transfer mixture to a blender and blend until smooth.
Add 3 tablespoons curry paste to a large bowl with ground chicken, spinach, remaining ½ cup cilantro and ¼ teaspoon salt. Form into 24 meatballs using a #40 scoop or about 1 ½ tablespoons meat mixture per meatball.
Heat remaining tablespoon oil in now-empty sauté pan over medium. Add meatballs in an even layer and cook until browned on all sides, about 10 minutes.
Meanwhile, add coconut milk (or yogurt) to blender with remaining curry paste and blend until smooth.
Add curry sauce to pan, bring to a low simmer and cook until meatballs are cooked through, 5–8 minutes.
Season with salt to taste. Serve with cooked brown rice, jeera rice, phulka (roti), or naan and fresh cilantro.