May 17, 2017
Gribiche: An Appreciation
gribiche4

It’s a classic French sauce of eggs, mayonnaise, oil, herbs, and capers. And what a versatile sauce it is.

The first time I made gribiche, a savory and tart French sauce with murky origins, I was working the salad station at an Italian restaurant in upstate New York. It was my part-time job while I was in college, and at the time I absolutely did not want to be making sauces. I wanted to be making dessert, but the restaurant, like a lot of restaurants, could not afford a dedicated pastry chef. So I made a few desserts in the daytime, and then I prepped the salad station with dressings and sauces, including gribiche. After graduation, I enrolled in pastry school and promptly forgot all about the tartar-like blend of mayonnaise, hard-boiled eggs, mustard, pickles, herbs, and capers.

Fast-forward a couple years, and I was facing down gribiche again, this time as a lowly but grateful stagiere (intern) working in the silent and pristine kitchen at Maison Troisgros in Roanne, France. Chef Michel Troisgros, the third generation of a culinary dynasty that started in the 1930s, runs the three-Michelin-starred restaurant and inn with his wife, Marie-Pierre. Michel was kind to me, and generous, but his cooks were not.

One cool spring day I was sent to the garden to pick parsley and then presented with four or five soft-boiled eggs. “Gribiche,” a French cook grunted at me before walking away. My mind raced. I hadn’t made that sauce in years. Another stagiere who spoke English whispered a few hints under his breath. “Make an emulsion. Use equal amounts cornichons and capers.” I cut the eggs in half, poured the soft yolks into a bowl, added mustard, vinegar, and oil and whisked until it looked a little bit like runny mayonnaise. Then I diced the hard whites and added them along with minced pickles, capers, and herbs; I tasted it for salt just as the cook strolled back to my corner. He dipped his middle finger in the bowl and licked it clean. Without a word or glance at me he dashed away with the sauce. I sighed with relief: Clearly, I hadn’t completely fucked it up. After my time at Troisgros, gribiche and I were forever friends.

It is said that the version of gribiche made with soft-boiled eggs was invented by Pierre Troisgros, Michel’s father. That variation, which years ago chef Judy Rodgers put on her menu at San Francisco’s Zuni Cafe, blends the undercooked yolks with oil and vinegar to create a rough mayonnaise. The classic recipe for gribiche involves adding chopped hard-boiled eggs to prepared mayonnaise that is thinned with additional oil and vinegar. Cornichons and capers almost always make an appearance along with parsley, but sometimes tarragon or chives are added, too.

The sauce is an emulsion of acid and fat with additional hits of acidity layered on in the form of capers and diced-up pickles—so while rich, it pairs well with fatty proteins like steak. And because of the added protein from the cooked eggs, it works with all sorts of vegetables, including green beans, endive, and potatoes. Plus, the chopped herbs usually include parsley and sometimes tarragon—light but peppery with a hint of minty anise. These herbs complement a wide range of savory dishes.

At Wildair, a popular restaurant and natural-wine bar on New York City’s Lower East Side, chefs Fabian von Hauske and Jeremiah Stone serve gribiche with a pork Milanese and a frizzle of bitter mustard greens. “It’s like a remoulade,” von Hauske says with a nonchalant shrug. “Tart, and with an interesting texture.” The two chefs put gribiche on the menu after a French friend of theirs made it for a tasting. (Remoulade is often confused with gribiche, but remoulade usually also contains anchovies.) “It was a riff on something we remember eating in France,” he says. Wildair’s gribiche is made from hard-boiled eggs that have been blitzed in the food processor with oil, vinegar, mayonnaise, mustard, herbs, and salt. The resulting emulsion is thick and pale with flecks of herbs and a heavy pickle-juice finish.

Chef Jeremy Fox of Rustic Canyon in Los Angeles agrees. “It’s really good with some coppa di testa and a little salad,” he says. Fox is currently serving a traditional gribiche over asparagus at the restaurant. “When we first put it on the menu, the dish didn’t sell,” he recalls. “I think people were turned off by the name. No one knows what gribiche is.” Fox’s solution? “Now we call it an egg sauce, and people love it. It’s all marketing.”

The chef, who used to run the kitchen at Ubuntu in the Bay Area, included a recipe for gribiche in his new book, On Vegetables: Modern Recipes for the Home Kitchen. It’s paired with salt potatoes (sometimes called salt miners’ potatoes) and coraline chicory in the book, but Fox has served the sauce with everything from pan-fried trout, where it acts like tartar sauce for a fish-and chips-riff, to smoked oysters with black garlic.

Here is Fox’s recipe, which comes together quickly after you’ve cooked the eggs. Though gribiche pairs well with many things, including poultry, steak, lamb, fish, and cooked or raw vegetables, one secret I picked up from my years of making it in restaurant kitchens is that it doesn’t have to be served on the side. Gribiche can be the main course. Make a batch and spread it on a slice of dark, crusty bread for the best egg salad sandwich ever.

RECIPE: Jeremy Fox’s Simple Gribiche

Daniela Galarza

Daniela Galarza is a writer and reporter who covers food, restaurants, cooking, and culture. She used to be a pastry chef. These days she puts her culinary degree to use by making birthday cakes for friends. She lives in New York with her dog Frito.

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