August 30, 2017
Whipped Ricotta: The New Crème Fraîche
1708_08252017_RicottaCrudite_Taste1280

All you need is a food processor and a bit of lemon juice to transform your ricotta into a completely new ingredient.

Ricotta is the black dress of Italian cheeses. It’s not only versatile and affordable, but with the help of a food processor and a touch of lemon juice and olive oil, any home cook can turn it into a new cheese altogether—one that’s luxuriously creamy and spreadable.

Ricotta makes an appearance in Italian dishes—like cheesecake, lasagna, manicotti, and pizza blanco—and has a soft texture and a sweet flavor that tastes great uncooked, all on its own. In Italy, cheesemakers allow whey to ferment and then heat it to almost boiling. Acidity and heat cause proteins to form fine curds. The curds strained from the heated liquid form ricotta—hence the name, which means “recooked” in Italian. In the United States, ricotta is often made from whole milk, rather than just whey, and vinegar is added to acidify it along with salt, before it is cooked to form curds. Rich whole-milk ricotta is firm yet not solid, with a very moist and granular texture and a mildly sweet flavor.

In Italy, cheesemakers manipulate ricotta by salting, smoking, or fermenting—shifting flavor and texture using sometimes elaborate steps. At home, you can transform it with just a couple of minutes in the food processor or blender. When ricotta is whipped, the curds are broken up and the ricotta loses its crumbly, chalky texture, becoming much smoother and creamier. The razor-sharp blades of a blender or food processor not only make the texture more homogenous and spreadable but also remove some of the air, making it denser. A bit of olive oil smooths it out, while lemon juice, zest, and salt highlight the cheese’s lightly fermented tang.

Whipped ricotta can be used in place of Greek yogurt, sour cream, or even crème fraîche in cold soups, as a base for dips, and in desserts. The sweetened version is similar to something called ricotta impastata, often used by pastry chefs in desserts like cannoli. It’s lovely slathered on crepes or pancakes, layered with berries or bananas to make a parfait, or used in place of mascarpone in tiramisu.

As a savory ingredient, ricotta is no longer just a filling for pasta. To make a dip for vegetables and chips, swirl pesto into whipped ricotta or spread it on toasted bread and top with prosciutto or roasted red peppers for a tasty antipasto. It’s versatile enough to use as a base for a fresh herb salad or tomato-and-cucumber salad, tossed with hot pasta or dolloped on roasted vegetables.

Look for a high-quality brand of whole-milk ricotta, without stabilizers if possible. You can whip part-skim milk ricotta, but it won’t be quite as rich and creamy. Whipped ricotta will keep in the refrigerator for several days, although it may separate slightly. To bring it back to life, simply give it a stir or drain off any liquid.

Whipped Ricotta

Whipped Ricotta

6 ounces

Ingredients

  • 1 cup whole-milk ricotta
  • 1 tablespoon olive oil
  • 1 teaspoon freshly squeezed lemon juice
  • ¼ teaspoon lemon zest
  • ¼ teaspoon kosher salt (scant)
  • ½ teaspoon granulated sugar, optional

Whipping ricotta transforms it into a luscious ingredient that is extremely versatile. The savory version can be used with salads, crostini, and pasta, while the sweet version is perfect on baked goods or fresh fruit. Its uses are limited only by your imagination.

  1. Combine the ricotta, olive oil, lemon juice, zest, salt, and sugar (if using) in a food processor with metal blade or a blender.
  2. Blend for 2 minutes or until silky smooth in the food processor or blender, stopping to scrape down the sides of the container once or twice with a spatula.
  3. Use right away or store in the refrigerator.

Amy Sherman

Amy Sherman is a San Francisco–based writer, recipe developer and publisher of the food blog Cooking with Amy. She has written for publications including Afar, Epicurious, Food Network, Gastronomica and Tasting Table,. She also develops recipes for clients and is the author of Williams-Sonoma New Flavors for Appetizers, WinePassport: Portugal and A Microwave, A Mug, A Meal.

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