In a large bowl, combine the chicken pieces with salt, black pepper, paprika, garlic powder, onion powder, and cayenne pepper. Mix well to coat the chicken evenly.
Sprinkle the flour over the seasoned chicken and toss to coat.
In a large skillet, heat the vegetable oil over medium-high heat. Add the chicken in batches, cooking until golden brown and crispy, about 5-7 minutes per batch. Remove the chicken and set aside.
In the same skillet, reduce the heat to medium and add the butter. Once melted, add the chopped onion and sauté until translucent, about 5 minutes.
Stir in the minced garlic and ginger, cooking for an additional minute until fragrant.
Pour in the tomato sauce and bring to a simmer. Cook for 5 minutes, stirring occasionally.
Add the heavy cream, garam masala, and sugar. Stir well to combine and let simmer for another 5 minutes.
Return the crispy chicken to the skillet, stirring to coat the chicken in the sauce. Cook for an additional 5 minutes until heated through.
Serve hot, garnished with chopped cilantro.