In a small bowl, mix yogurt, garlic, ginger, garam masala, salt and pepper. Mix in trimmed lamb cubes and refrigerate for 3 hours to marinade.
In a large, cast iron skillet, melt butter. Add onion slices and sauté over medium heat until golden brown, 5-7 minutes.
Drain rice and add it to the onions along with the spices. Saute for 1-2 minutes.
Add lamb cubes with marinade and water. Bring the mixture to a simmer over medium heat. Reduce heat to low, cover and simmer until the rice is cooked and most of the moisture is absorbed, 25-30 minutes.
Remove the pan from the heat and let stand, covered for 5 minutes before serving for the remaining moisture to be absorbed.