The cooking goes fairly quickly, so I like to chop the 2 serrano peppers and 8 Roma tomatoes in advance.
When you're ready to make the curry, place a large skillet over medium heat and add 2 tsp olive oil and melt 3 tbsp butter.
Add the remaining 1/3 cup Ginger-Garlic Paste and the chopped serrano peppers. Saute until lightly browned around the edges.
Add 2 tbsp tomato paste and cook until the tomato has darkened in color, about 3 minutes.
Add 1 tsp garam masala and 2 tsp paprika and saute for about 1 minute to draw out their flavors.
Add the tomatoes, 1 1/2 tsp kosher salt, and 1 cup water, more if the tomatoes do not have a lot of liquid.
Bring to a boil, turn down to a simmer, and cook until thickened, about 20 minutes. You may need more water depending on how much liquid the tomatoes give off.
Meanwhile, cook the chicken in a separate pan with 2 tbsp olive oil. Shake off some of the excess marinade and cook for about 2 minutes on each side. Don't worry that the chicken will still be a little uncooked, it finishes cooking in the sauce.
Once the chicken is done and the sauce is cooked down, use an immersion blender to blend the sauce (or put into a blender or food processor and transfer back to the pan) and bring to a boil again.
Add the chicken. Take the heat down to a simmer and cook for about 10 minutes. Add the 1/2 cup heavy cream and stir through.
Garnish with fresh cilantro and serve.