November 21, 2016
Boeuf Bourguignon: The Beef Stew of Beef Stews
Beef Bourguignon

To quote Julia Child, this dish is “one of the most delicious beef stews concocted by man.” Julia knew.

Boeuf bourguignon was introduced to the American home cooks by California native Julia Child. In Mastering the Art of French Cooking, Child’s 1961 magnum opus, she describes the dish as “one of the most delicious beef stews concocted by man.” I couldn’t agree more. In essence, boeuf bourguignon is beef that has been seared and then braised in red Burgundy wine (Pinot Noir) and beef stock, and later stewed with aromatics (carrots, onions, garlic), and seasoned with a bouquet garni—a bundle of herbs, usually parsley, bay leaves, and thyme, tied with string—until the meat is succulent and tender and its braising liquid rich and flavorful.

Despite its fancy-sounding French name, boeuf bourguignon is a straightforward dish.

This classic French dish is without a doubt one you should have in your autumn and winter cooking arsenal. It’s great for a crowd, and can be reheated and tastes even better the next day, or the day after. Think of it as the beef stew of beef stews.

Boeuf bourguignon originated in France’s Burgundy region and serves as a tribute to the area’s rich wine-making history and as an homage to its prized Charolais cattle. Beef bourguignon was first mentioned in a cookbook in 1903 by chef Auguste Escoffier, who utilized a whole piece of tough beef that had been braised over the course of two days to tenderize the meat and intensify the stew’s flavor.

Beef Bourguignon

I’ve made this stew with chuck roast and beef shanks with equal success. Beef shanks require a slightly longer cooking time to tenderize, and you need to account for the bone-in weight (be sure to add the marrow bones). While not traditional, I’ve even substituted some lovely lamb (neck or shoulder) for half of the beef. Lamb shoulder/neck has a good amount of fat and connective tissue, which works magic when braised for several hours.

And then bacon enters the equation. I particularly like the addition of double-smoked bacon, like Nueske’s or Benton’s, which lends a kick of smokiness to the stewed beef. Using a good-quality beef stock, either homemade or from your local butcher, adds to the richness of the stew.

Beef Bourguignon

As for the wine, a Bourgogne Rouge (Pinot Noir from France’s Burgundy region) is traditional. But there is no need to shell out for an expensive bottle. A decent bottle in the $15 to $20 range will suffice. A fairly full-bodied, relatively young red wine from France’s Côtes du Rhône region or a bottle of Beaujolais (Gamay) would work equally well.

And lastly, since I happen to love mushrooms and a pound of mushrooms always seem to cook down to nothing, I double up on the mushrooms. I like cremini mushrooms for their meaty texture and reasonable cost, but you could substitute your favorite mushroom or mix of mushrooms.

Despite its fancy-sounding French name, boeuf bourguignon is a straightforward dish that any home cook can master, and one for which you will receive much applause.

BOEUF BOURGUIGNON
Serves 6 to 8

INGREDIENTS
1 tablespoon olive oil
8 ounces thick-cut bacon, preferably double smoked, cut into lardons
3 pounds of beef, such as shanks and/or blade chuck roast, cut into 2-inch chunks (if using bone-in meat, account for the bones in the weight)
Salt and pepper
1 large onion, chopped
1 pound of carrots, peeled and chopped into 1-inch chunks
3 cloves of garlic, minced
1 tablespoon tomato paste
1 bottle Burgundy red wine (full-bodied, young Pinot Noir or Côtes du Rhône or Gamay)
2 cups good-quality beef stock
Bouquet garni: a tied bundle of thyme, bay leaf, and parsley
2 tablespoons unsalted butter
2 pounds cremini mushrooms, cut in half or kept whole if small
1 pound pearl onions, peeled

For the beurre manié
2 tablespoons softened butter
2 tablespoons all-purpose flour

For serving
Chopped parsley
Crusty toasted/grilled French bread, rubbed with a clove of garlic

DIRECTIONS
1. Preheat the oven to 250°F.

2. Heat the oil in a large pot or Dutch oven. Add the bacon and cook over medium-low heat until crispy. Remove the bacon with a slotted spoon and set aside.

3. Pat the beef dry. Season with salt and pepper. Increase the heat to medium-high and sear the beef in a single layer in the bacon fat (in batches—make sure not to crowd the pan), turning the meat until nicely browned on all sides, about 3 to 5 minutes per batch. Remove the beef and set aside. Repeat with the remaining beef.Beef Bourguignon

4. Add the chopped onions and carrot to the pot and sauté until softened and aromatic, about 10 minutes. Add the garlic and sauté another minute.

5. Add the reserved bacon and beef (I also threw in the marrow bones from my bone-in shanks for extra flavor). Add the tomato paste, red wine, beef stock, and bouquet garni. Season with salt and pepper. Stir to combine. Bring to a simmer on the stovetop. When it comes to a simmer, cover and place the pot in the oven. Cook until the meat is very tender, about 2 hours.

6. Meanwhile, heat a large pan over medium heat. Add two tablespoons of butter. When hot, add the mushrooms, season with salt and pepper, and sauté (in batches) until lightly browned, about 10 minutes. Remove from the pan and set aside. Repeat with the remaining mushrooms, adding more butter. Sauté the pearl onions until lightly browned.

7. When the meat is very tender, remove the pot from the oven. Remove the bouquet garni.

8. Make the beurre manié: Blend the butter and flour in a small bowl. Add to the pot in small amounts, stirring after each addition until it has all been incorporated.

9. Add the mushrooms and pearl onions to the stew.

10. Bring the pot to a simmer on the stovetop. Let simmer for 30 minutes to thicken. Taste and season with salt and pepper. Sprinkle with chopped parsley before serving.

Linda Schneider

Linda Schneider is a home cook who is obsessed with good food and all things local. Follow her adventures at Wild Greens and Sardines.

[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>