1 cup/240 mL grass-fed organic plain yogurt or kefir
1 tablespoon finely grated fresh ginger
2 garlic cloves, minced
11/2 teaspoons ground coriander
11/2 teaspoons ground cumin
1 teaspoon fine sea salt
1/2 teaspoon freshly ground black pepper
1/4 teaspoon ground cardamom
1/2 teaspoon ground turmeric
1/8 teaspoon cayenne pepper
11/2 pounds/680 g grass-fed lamb stew meat or boneless leg of lamb, cut into 11/2-inch/4 cm pieces
2 tablespoons organic neutral-flavored oil, such as grape seed, plus more as needed
1 large yellow onion, cut into 1/4-inch/0.65 cm dice
2 garlic cloves, minced
1 teaspoon finely grated fresh ginger
41/2 teaspoons garam masala (see note)
11/2 teaspoons chili powder
1/2 teaspoon cayenne pepper
11/2 pounds/680 g tomatoes, peeled (optional), seeded, and cut into 1/4-inch/0.65 cm dice
Fine sea salt to taste
2/3 cup/160 mL grass-fed organic plain yogurt or kefir, at room temperature
Cilantro sprigs, for garnish
To make the lamb: In a medium bowl, combine the yogurt, ginger, garlic, coriander, cumin, salt, pepper, cardamom, turmeric, and cayenne. Transfer to a large resealable plastic bag and add the lamb, tossing to coat. Close the bag, squeezing out as much air as possible, and chill in the refrigerator for 4 to 8 hours.
Thread the lamb onto skewers, shaking off any excess marinade (discard the marinade).
Preheat a grill to high heat and lightly oil the grate; or preheat the broiler, lightly oil a rimmed baking sheet, and position a rack about 5 inches/13 cm from the heating element. Arrange the skewers on the grill or the baking sheet and grill or broil until just cooked through and browned in spots, 6 to 8 minutes per side. Set aside and let rest, covered loosely with foil.
To make the sauce: In a large skillet over medium heat, heat the oil. Add the onion, garlic, and ginger and cook, stirring occasionally, until the onion is tender and lightly browned, about 8 minutes. Add the garam masala, chili powder, and cayenne and cook, stirring, for 1 minute. Add the tomatoes and lamb, sliding the lamb off the skewers and into the skillet. Cook, stirring frequently, until the tomatoes release some of their juices, 1 to 2 minutes. Bring to a boil and lower the heat to a simmer. Cover partially and cook, stirring occasionally, until the tomatoes become saucelike, about 10 minutes.
Stir in the yogurt and salt and pepper to taste. Serve hot, garnished with cilantro sprigs.