In a large bowl, mix together chicken, grated onion, egg, breadcrumbs, salt and pepper. I use my hands.
Roll into 20 meatballs and set on plate.
Heat a large skillet on medium-high heat and add olive oil. Once hot, add meatballs and cook about 6-7 minutes or when internal is 165F, turning the meatballs every minute or so in order to get all sides cooked. Set meatballs aside on clean plate.
Reduce heat in pan to medium and add 2 tbsp butter. Add in diced onion and cook for 2-3 minutes until beginning to soften. Add in garlic and ginger. Then add in turmeric, garam masala, curry powder, salt, and pepper.
Immediately add in tomato paste, then whisk in whole milk until totally smooth. Pour in chicken stock and bring to a light simmer. Once lightly simmering, add remaining 2 tbsp butter. Let sauce thicken and bubble for 5 minutes, stirring throughout.
Add meatballs back into sauce and toss to coat. Let meatballs simmer 5 more minutes before serving.
Serve over rice and with naan!