Chocolate Salami
2
7-to-8 inch salami
Dessert
Course
Print Recipe
Ingredients
Directions
Ingredients
¼ c
hazelnuts
Jump
¼ c
shelled Sicilian pistachios
Jump
1 c
bittersweet chocolate fèves (discs or wafers)
Jump
6 tbsp
unsalted butter, at room temperature
Jump
¼ c
granulated sugar
Jump
1
egg
Jump
2 tbsp
Amaro Nonino
Jump
½ c
biscotti crumbs
Jump
Finely grated zest of ½ orange
Jump
Finely grated zest of ½ orange
Jump
Confectioners’ sugar for coating
Jump

This dish was created by Frasca pastry chef Alberto Hernandez. It also happens to be one of the simplest dishes in the book. It’s a great end-of- meal nibble for a large group, or it could be the surprise hero at your next party. The quality of the chocolate is very important because the salami is all chocolate—look for chocolate wafers made by Callebaut or Valhrona. Make sure your hands are clean before rolling the logs in the powdered sugar, and let the salami come to room temperature before serving.

Notes: Amaro Nonino Quintessentia is a digestive herbal liqueur made by the Nonino family in Friuli; they infuse their grappa with a blend of herbs, spices, and roots, including gentian, saffron, licorice, rhubarb, sweet and bitter orange, tamarind, quassia bark, chinchona bark, and galangal. You’ll find the amaro in all good liquor stores.

Sicilian pistachios are smaller and sweeter than the ones that come from Iran, California, or Turkey. They are grown on the foothills of Mount Etna and are also known as Bronte pistachios. They can be purchased online.

Directions

  1. Preheat the oven to 350°F.
  2. Spread the hazelnuts and pistachios, taking care not to mix them together, on a baking sheet and toast until fragrant, 8 to 9 minutes. Skin the hazelnuts by putting them between two sheets of paper towel or a clean kitchen towel and rub¬bing vigorously. Pick out the hazelnuts from the dark flakes (it’s okay if some patches of dark skin remain).
  3. In a heatproof bowl over a saucepan of simmering water (make sure the bottom of the bowl doesn’t touch the water), regularly stir the chocolate until melted, about 2 minutes. Alternatively, microwave the chocolate in short 10-to 15-second bursts, stirring well after every burst, until completely melted. Set the melted chocolate aside.
  4. In the bowl of a stand mixer fitted the paddle attachment, on medium speed, cream the butter and granulated sugar until combined, about 2 minutes. Add the egg and continue to mix until incorporated. Then add the melted chocolate and amaro and mix well. Stop the mixer and, using a spatula, manually fold in the biscotti crumbs, orange zest, hazelnuts, and pistachios.
  5. Lay out two large squares of plastic wrap on a work surface. Divide the chocolate mixture into two equal parts. Place one half of the chocolate mixture in the middle of each square and, using a spatula, spread into an approxima¬tion of a log shape, 4 to 5 inches long. Pick up the plastic wrap at either end and use it and your hands to tighten and smooth the log into a nice even shape—the log should be about 1 1⁄2 inches in diameter and 7 to 8 inches long. Twist each end, as you would a candy wrapper, to tighten. Repeat with the second half of chocolate mixture. Transfer both logs to a small plate or tray and refrigerate for at least 2 hours or up to overnight.
  6. Pour confectioners’ sugar onto a large plate. Unwrap the chocolate logs and roll in the confectioners’ sugar to mimic the white edible mold on an aged salami. Shake off any excess sugar. If you’re feeling fancy, you can also tie up the salami in twine.
  7. The salami will keep in an airtight container, at room temperature, for up to 1 week. Make sure you let them come to room temperature before slicing and serving.

Reprinted from FRIULI FOOD AND WINE: Frasca Cooking from Northern Italy’s Mountains, Vineyards, and Seaside. Copyright © 2020 by Frasca Food and Wine, Inc. Photography copyright © 2020 by William Hereford. Published by Ten Speed Press, an imprint of Random House, a division of Penguin Random House LLC.

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