Heat oil or ghee or ghee in a frying pan or skillet over medium-high heat.
Add meatballs. Fry for about 3-4 minutes or until all sides are browned.
Remove from pan. Set aside.
To the same pan, add bay leaf, cinnamon stick, cloves, and cardamom pods. Stir fry for 30 seconds.
Add onions. Sauté, stirring occasionally, for about 2-3 minutes or until soft and translucent.
Add ginger, garlic, and green chilies. Sauté, stirring occasionally, for about 2 minutes or until fragrant.
Add tomato paste. Sauté, stirring, for about 2 minutes.
Add turmeric, cumin, coriander, and red chili powder. Sauté, stirring, for about 1 minute or until aromatic.
Add water to make thick sauce. Season with salt and pepper. Stir.
Simmer for about 2-3 minutes.
Add meatballs.
Pour in cream. Stir to combine.
Bring to a boil. Simmer for about 20-25 minutes or until meatballs are cooked through. Add more water if required.
Add garam masala, fenugreek leaves (if using), and coriander (cilantro) leaves. Stir. Heat through.
Garnish with coriander (cilantro) leaves.
Serve with naan, parathas, or rice.