Ghee-Smoked Chicken and Rice with Spicy Mint Sauce
4
servings
Main
Course
Print Recipe
Ingredients
Directions
Chicken
4 lg
bone-in, skin-on chicken thighs
Jump
¼ c
plain full-fat yogurt (not Greek yogurt)
Jump
1 tbsp
peeled and minced fresh ginger
Jump
1 tbsp
minced garlic
Jump
1 tbsp
Madras curry powder
Jump
1 tsp
salt
Jump
1 tsp
cayenne pepper
Jump
Sauce
12
fresh green bird’s eye chiles, or 6 large green serrano or jalapeño peppers, sliced
Jump
½ c
firmly packed fresh mint leaves
Jump
½ c
firmly packed fresh cilantro leaves
Jump
2 tsp
granulated sugar
Jump
¼ tsp
salt
Jump
½ c
fresh lime juice
Jump
Fried Rice
¾ c
vegetable oil
Jump
2 oz
shallots, halved lengthwise, then thinly sliced lengthwise
Jump
3 lg
garlic cloves, minced
Jump
4 lg
fresh red hot chiles, or 1 small red bell pepper, seeded, deveined and cut into 1⁄4-inch dice
Jump
½ c
golden or dark raisins, soaked in water to cover for 15 minutes, drained, and blotted dry
Jump
1 tbsp
chicken bouillon granules
Jump
1 tbsp
Madras curry powder
Jump
2 tsp
ground turmeric
Jump
1 tsp
salt
Jump
4 c
packed cooked jasmine rice, separated into individual grains
Jump
¼ c
ghee, melted
Jump

When my paternal grandparents moved into their new home in the Min Buri District, on the east side of Bangkok—a dream home away from the city center with enough acreage to plant as many mango trees as they wanted—they found themselves living amid several communities of Thai Sunni Muslims, who had been settled in the area for generations. At first it was a new experience for my grandparents. Being roused from sleep before dawn by multiple loudspeakers announcing the first call for prayer had never before been part of their daily routine, for example. But it didn’t take them long to adjust to the new environment and to get to know and appreciate the new neighbors. In fact, my grandmother became close friends with several elderly ladies from these communities, who would sometimes go to her house and play board games with her on weekdays when she was home alone. Things developed from there. The board game group quickly became a book club, a knitting club, an orchid-growing club, and eventually a lunch club, where the members took turns cooking a dish for the group and teaching the other members how to make it.

This recipe started from chicken biryani, a classic South Asian chicken and rice dish that Fatima, one of the lunch club members, got from her Pakistani mother-in-law, who had settled in Thailand. Looking at the ingredients, I can tell that Fatima’s mother-in-law must have simplified it a great deal, as it barely resembles chicken biryani as it is traditionally made in South Asia. Maybe several key South Asian ingredients weren’t widely available in Thailand when she immigrated. Or maybe Fatima’s mother-in-law was just having fun with it. Regardless, it was a favorite among the lunch club ladies.

Fatima cooked marinated chicken thighs on a charcoal grill and nestled them in a bed of fried rice before smoking the finished dish using the dhungar method, which imparted the smoky, buttery scent that my grandmother remembered. She used Thai jasmine rice instead of basmati rice, which is typically used in South Asian cooking, and served the dish with her own hot and tangy mint sauce.

Directions

  1. To marinate the chicken: Make two or three evenly spaced gashes on the meaty side of each chicken thigh. In a large bowl, combine the yogurt, ginger, garlic, curry powder, salt, and cayenne and mix well. Add the chicken and turn to coat evenly. Cover and refrigerate for 4 to 6 hours.
  2. Just before you light the grill, make the sauce: In a blender, combine the chiles, mint, cilantro, sugar, salt, and lime juice and blend until not quite smooth; tiny bits of the ingredients should be visible. Taste and adjust the seasoning with more salt and lime juice if needed, aiming for sour, sweet, and very spicy notes. Set aside at room temperature until serving time.
  3. Start the fried rice by frying the shallots: Put a fine-mesh sieve over a small heatproof bowl. In a small frying pan, combine the oil and shallots over medium heat and cook, stirring constantly, until the shallots are golden brown and crispy, 5 to 7 minutes. Immediately pour the contents of the pan into the sieve. Let the shallots and oil cool separately.
  4. Prepare a medium-high fire (400° to 450°F) in a charcoal grill using the two-zone method.
  5. While the coals are heating, finish the fried rice: In a large wok or frying pan, heat 2 tablespoons of the shallot-flavored oil over high heat. Add the garlic and chiles and fry until the chiles have softened a bit, about 1 minute. Stir in the raisins, bouillon granules, curry powder, turmeric, and salt and fry just until the spices are dispersed (if the pan is too dry, add a few tablespoons of water). Add the rice and stir-fry until heated through and the rice is evenly tinted yellow, 1 to 2 minutes. Transfer to a Dutch oven or other large, heavy pot with a tight-fitting lid. Put the ghee in a small heatproof container and place it in the middle of the rice, pushing down slightly to make sure it stays in place and won’t tip over. Put the lid on the pot to keep the rice warm.
  6. When the coals are covered with white ash and the grate is hot, oil the grate thoroughly. Place the chicken in the center of the grill between the hot side and the hold side. Cook the thighs with the vents half-opened, flipping them and moving them back and forth between the hold side and the hot side every 3 to 5 minutes. Along the way, brush them with the remaining shallot oil, being careful of flare-ups. The chicken pieces are ready when they are golden brown and the internal temperature in the thickest part of a thigh away from bone registers 165°F, about 30 minutes.
  7. Using tongs, transfer the chicken pieces to the rice pot, arranging them around the ghee container and pushing them down into the rice—or even burying them in the rice. Take one or two pieces of burning charcoal from the grill and place them in the ghee container. After the initial sizzle, quickly cover the pot, sealing any gaps with kitchen towels to trap the smoke inside. Leave the pot undisturbed for 15 minutes.
  8. Uncover the pot and remove the ghee container. (Alternatively, to dazzle your guests, take the entire pot to the table and remove the lid in front of them, letting the smoke billow out.) Sprinkle the fried shallots over the dish and serve warm with the sauce.

Reprinted with permission from Flavors of the Southeast Asian Grill: Classic Recipes for Seafood and Meats Cooked Over Charcoal by Leela Punyaratabandhu. Copyright© 2020 shesimmers.com. Photographs copyright ©2020 by David Loftus. Published by Ten Speed Press, an imprint of Penguin Random House.

[email_signup id="3"]
<div class="email-subscribe exp-subscribe subscribe"> <div class="alert alert-success exp-success ga-etembed-success" style="display:none;"> Great! You've signed up successfully! </div> <div class="alert alert-danger exp-error" style="display:none;"> We are experiencing an error, please try again. </div> <form name="subscribe" id="email-signup" class="email-signup-form" action="https://www.tastecooking.com/wp-admin/admin-ajax.php" method="POST" target="_top" data-event-assigned="false"> <fieldset class="form-group form-inline email-submit-group"> <label for="email-address" class="sr-only">Email Address</label> <input id="email-newsletter" type="email" placeholder="your@email.com" class="email-newsletter text email form-control" name="email" value=""> <button type="submit" value="Subscribe" name="subscribe" class="btn btn-primary email-submit-btn ga-etembed-success"> <i class="fa fa-envelope"></i> Subscribe </button> </fieldset> <small class="exp-small terms" style=""> By clicking Subscribe, I acknowledge that I have read and agree to the Penguin Random House <a href="http://www.penguinrandomhouse.com/privacy/" target="_blank">Privacy Policy</a> and <a href="http://www.penguinrandomhouse.com/terms/" target="_blank">Terms of Use</a> and agree to receive news and updates from TASTE and Penguin Random House. </small> <fieldset class="field-group checkboxes" style="display:none"> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50501,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook General</strong></span> </label> </div> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50502,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook Promo</strong></span> </label> </div> </fieldset><!-- /.checkboxes --> <input type="hidden" name="data_acq_code" value="TASTE_POPUP_STATIC_ONGOING" /> <input type="hidden" name="data_programs" value="50501|505,50502|505" /> <input type="hidden" name="form_id" value="3" /> <input type="hidden" name="partner" value="" /> <input type="hidden" name="action" value="crown_email_signup_submit" /> <input type="hidden" name="ref_url" value="" /> </form> </div> <script> jQuery(document).ready(function () { var unassigned_forms; setInterval( function() { //Check for unassigned forms var forms = jQuery( '.email-signup-form' ); unassigned_forms = false; forms.each( function( index ) { if ( jQuery( this ).attr( 'data-event-assigned' ) === 'false' ) { unassigned_forms = true; } }); if ( unassigned_forms ) { forms.off( 'submit' ).on( 'submit', function ( e ) { forms.attr( 'data-event-assigned', 'true' ); e.preventDefault(); // Basic email validation var email = jQuery(e.target).find('.email-newsletter').val(), valid_email = false, groupEl = jQuery(e.target).closest('.email-subscribe'); if ( !!email && typeof(email) === "string" ) { var email_array = email.split('@'); if ( email_array.length === 2 ) { if ( email_array[1].split('.').length > 1 ) { valid_email = true; } } } if ( valid_email ) { jQuery('.alert-danger').hide(); // Show loading gif groupEl.find('.email-signup-form').hide(); groupEl.find('.email-submit-loading').show(); // Populate ref_url jQuery(this).find('input[name="ref_url"]').val(window.location.href); // Generate Payload var payload = jQuery(this).serializeArray(); jQuery.ajax({ url: jQuery(this).attr('action'), type: 'POST', data: payload, success: function (data) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display success msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-success').show(); jQuery(e.target).parent().find('#downloadbtn').show(); }, fail: function (err) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display failure msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-danger').show(); } }); } else { groupEl.find('.alert-danger').html('Please enter a valid email address.').show(); } }); forms.off( 'keypress' ).on( 'keypress', function ( e ) { if ( e.which === 13 ) { e.preventDefault(); jQuery( this ).submit(); } }); } }, 100); }); </script>
[email_signup id="3"]
<div class="email-subscribe exp-subscribe subscribe"> <div class="alert alert-success exp-success ga-etembed-success" style="display:none;"> Great! You've signed up successfully! </div> <div class="alert alert-danger exp-error" style="display:none;"> We are experiencing an error, please try again. </div> <form name="subscribe" id="email-signup" class="email-signup-form" action="https://www.tastecooking.com/wp-admin/admin-ajax.php" method="POST" target="_top" data-event-assigned="false"> <fieldset class="form-group form-inline email-submit-group"> <label for="email-address" class="sr-only">Email Address</label> <input id="email-newsletter" type="email" placeholder="your@email.com" class="email-newsletter text email form-control" name="email" value=""> <button type="submit" value="Subscribe" name="subscribe" class="btn btn-primary email-submit-btn ga-etembed-success"> <i class="fa fa-envelope"></i> Subscribe </button> </fieldset> <small class="exp-small terms" style=""> By clicking Subscribe, I acknowledge that I have read and agree to the Penguin Random House <a href="http://www.penguinrandomhouse.com/privacy/" target="_blank">Privacy Policy</a> and <a href="http://www.penguinrandomhouse.com/terms/" target="_blank">Terms of Use</a> and agree to receive news and updates from TASTE and Penguin Random House. </small> <fieldset class="field-group checkboxes" style="display:none"> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50501,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook General</strong></span> </label> </div> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50502,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook Promo</strong></span> </label> </div> </fieldset><!-- /.checkboxes --> <input type="hidden" name="data_acq_code" value="TASTE_POPUP_STATIC_ONGOING" /> <input type="hidden" name="data_programs" value="50501|505,50502|505" /> <input type="hidden" name="form_id" value="3" /> <input type="hidden" name="partner" value="" /> <input type="hidden" name="action" value="crown_email_signup_submit" /> <input type="hidden" name="ref_url" value="" /> </form> </div> <script> jQuery(document).ready(function () { var unassigned_forms; setInterval( function() { //Check for unassigned forms var forms = jQuery( '.email-signup-form' ); unassigned_forms = false; forms.each( function( index ) { if ( jQuery( this ).attr( 'data-event-assigned' ) === 'false' ) { unassigned_forms = true; } }); if ( unassigned_forms ) { forms.off( 'submit' ).on( 'submit', function ( e ) { forms.attr( 'data-event-assigned', 'true' ); e.preventDefault(); // Basic email validation var email = jQuery(e.target).find('.email-newsletter').val(), valid_email = false, groupEl = jQuery(e.target).closest('.email-subscribe'); if ( !!email && typeof(email) === "string" ) { var email_array = email.split('@'); if ( email_array.length === 2 ) { if ( email_array[1].split('.').length > 1 ) { valid_email = true; } } } if ( valid_email ) { jQuery('.alert-danger').hide(); // Show loading gif groupEl.find('.email-signup-form').hide(); groupEl.find('.email-submit-loading').show(); // Populate ref_url jQuery(this).find('input[name="ref_url"]').val(window.location.href); // Generate Payload var payload = jQuery(this).serializeArray(); jQuery.ajax({ url: jQuery(this).attr('action'), type: 'POST', data: payload, success: function (data) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display success msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-success').show(); jQuery(e.target).parent().find('#downloadbtn').show(); }, fail: function (err) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display failure msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-danger').show(); } }); } else { groupEl.find('.alert-danger').html('Please enter a valid email address.').show(); } }); forms.off( 'keypress' ).on( 'keypress', function ( e ) { if ( e.which === 13 ) { e.preventDefault(); jQuery( this ).submit(); } }); } }, 100); }); </script>