01 - Pat the lamb shanks thoroughly dry with paper towels. Generously season all sides with salt and pepper to taste.
02 - Heat vegetable oil in a large heavy-based pot or Dutch oven over medium-high heat. Add lamb shanks and sear on all sides until deeply browned, approximately 3-4 minutes per side. Remove shanks and set aside on a plate.
03 - In the same pot, add sliced onions. Sauté over medium heat, stirring occasionally, until golden brown and caramelized, about 10 minutes.
04 - Add minced garlic and grated ginger to the pot. Cook for 1-2 minutes, stirring constantly until fragrant and raw aroma dissipates.
05 - Stir in all ground spices (coriander, cumin, garam masala, turmeric, chili powder, black pepper) plus bay leaves, cloves, cardamom pods, and cinnamon stick. Toast for 1 minute, stirring constantly to release essential oils and prevent burning.
06 - Add canned chopped tomatoes to the pot. Cook for 5 minutes, stirring occasionally, until tomatoes soften completely and release their juices, creating a thick base.
07 - Return seared lamb shanks to the pot. Pour in stock and bring to a gentle simmer. Cover with a tight-fitting lid, reduce heat to low, and maintain a gentle simmer.
08 - Braise covered for 2.5 hours, turning shanks every 30-45 minutes to ensure even cooking. The lamb should become tender and start pulling away from the bone.
09 - Uncover the pot. Stir in yogurt, fresh chopped tomatoes, and green chili if using. Simmer uncovered for 45-60 minutes, stirring occasionally, until lamb is fall-off-the-bone tender and sauce has thickened nicely.
10 - Skim any excess fat from the surface. Taste and adjust seasoning with additional salt if needed. Garnish generously with fresh cilantro and serve immediately with lemon wedges on the side.