Marinate the chicken: In a large bowl, combine chicken pieces with lime juice, 2 minced garlic cloves, 1 teaspoon salt, and half the paprika. Mix well and marinate for 30 minutes at room temperature.
Prepare aromatics: While chicken marinates, dice the onion, mince remaining garlic, grate ginger, and finely chop the peppers. Measure out all spices into small bowls.
Heat the oil: In a large, heavy-bottomed Dutch oven or deep skillet, heat oil over medium-high heat until shimmering.
Brown the chicken: Remove chicken from marinade and brown in batches, 3-4 minutes per side until golden. Don't overcrowd the pan. Transfer browned chicken to a plate and set aside.
Sauté aromatics: In the same pan, reduce heat to medium and add diced onion. Cook for 3-4 minutes until translucent. Add minced garlic and grated ginger, cooking for 30 seconds until fragrant.
Add spices: Add paprika, cumin, coriander, and chopped peppers to the pan. Cook for 30 seconds, stirring constantly to prevent burning and release the spice oils.
Add coconut milk: Slowly pour in the coconut milk, stirring to combine with the spice mixture. Add bay leaves and bring to a gentle simmer.
Simmer the dish: Return browned chicken to the pan, ensuring pieces are mostly covered by the coconut milk. Reduce heat to low, cover, and simmer for 25-30 minutes until chicken is tender and cooked through (internal temperature 165°F/74°C).
Final seasoning: Remove bay leaves. Taste and adjust seasoning with salt, pepper, and additional lime juice as needed. The sauce should be creamy and coat the back of a spoon.
Garnish and serve: Remove from heat and stir in fresh cilantro. Serve immediately over Brazilian white rice with lime wedges on the side. Garnish with additional cilantro if desired.