Blueberry Coulis

blueberry coulis being poured over a bowl of vanilla ice cream

This blueberry coulis recipe brings together two of our core missions at Healthy Seasonal Recipe: 1) Showcasing simple ways to incorporate seasonal produce into everyday recipes and 2) Teaching simple culinary school techniques to use at home! Learning how to make this classic strained blueberry sauce is easy and a great way to use blueberries!

Drizzle this easy and delicious homemade blueberry sauce over ice cream and pancakes, or pair it with a tasty cheese board.

blueberry coulis being poured over a bowl of vanilla ice cream

Table of contents

  • What is Blueberry Coulis
  • Ingredients for Blueberry Coulis Sauce
  • How to Make Homemade Blueberry Sauce
  • Chef Katie’s Expert Tips and FAQs for Blueberry Sauce
  • Serving Suggestions
  • Make Ahead and Freezing
  • Variations to Try

What is Blueberry Coulis

A traditional strained fruit sauce, blueberry coulis, is made with four simple pantry staples: blueberries, lemon juice, a splash of water, and a little sweetener – white sugar or honey. Plus, this easy homemade blueberry sauce can be made in advance and stored in the fridge for up to 10 days or frozen for up to 3 months meaning you can always have this tasty condiment whenever you get the hankering!

Ingredients for Blueberry Coulis Sauce

blueberry sauce ingredients with text overlay
  • Blueberries: Since fresh blueberries are in season we used them today, however, if all you have on hand are frozen blueberries, feel free to use these! They will clump together in the pot and take a little longer to come to a simmer, so stir them well in the first several minutes to break them apart.
  • Honey: We opted for honey to make this sauce but it works just as well with granulated sugar, agave or maple syrup.
  • Lemon Juice: The lemon balances the sweetness and helps activate the natural pectin in the blueberries. The pectin helps to thicken the coulis sauce! We recommend freshly squeezed lemon juice. If you love lemon- add a little zest after it comes off the heat.

How to Make Homemade Blueberry Sauce

metal bowl

Step 1: Cook the Blueberries

In a medium saucepan over medium heat, stir the blueberries, sweetener of choice, lemon juice, and water until the blueberries start to burst and the mixture boils.

vitamix

Step 2: Let the Sauce Cool

Remove this blueberry sauce from the heat and let it cool.

food processor

Step 3: Puree the Mixture

Puree the blueberry mixture until smooth using a blender, food processor, or immersion blender.

Healthy Eating

Step 4: Strain the Blueberry Coulis

Place a fine mesh sieve over a medium bowl and pour the puree through the sieve with a spatula.

Katie

Step 5: Bottle Up the Strained Blueberry Sauce

Transfer the cooked blueberry sauce to a jar and chill. Serve cold or at room temperature and enjoy!

homemade blueberry sauce drizzled over vanilla ice cream

Chef Katie’s Expert Tips and FAQs for Blueberry Sauce

What is the difference between a berry coulis and a puree?

While both a berry coulis and a puree are blended sauces, in a coulis the puree is poured through a fine mesh sieve to remove any seeds or pulp to create a silky-smooth condiment.

Why is it called coulis?

Coulis is a French word that means “strained liquid” and that’s exactly what this simple sauce is! A pureed blueberry mixture that is strained to produce a velvety sauce.

What is the difference between coulis and sauce?

Sauce is a broad category that encompasses smooth, chunky, thin and thick textures and everything in between. A coulis is a specific type of sauce usually made with fruit, though they can also be made with savory ingredients like red peppers or tomato. Coulis is more refined that some other fruit sauces because it is cooked and strained so it has a jewel like color, shiny appearance and perfectly smooth texture.

Can I add more or less sugar?

Yes! Taste your berries and if they are on the sweet side, start with 3 tablespoons of honey or sugar. And add more to taste.

Can you make blueberry coulis without added sugar?

Yes! Puree the blueberries, lemon and water in the food processor, then add to a heavy-bottomed saucepan. Heat, stirring often over medium heat until the mixture simmers. Continue cooking, stirring occasionally until the mixture darkens and the blueberries are very saucy and broken down, about 8 minutes. Remove from the heat. If desired, add a non-nutritive sweetener like monk fruit or stevia to taste, and then cool. Puree again, strain and enjoy!

Serving Suggestions

This simple blueberry sauce tastes delicious with a variety of dishes and pairings! Below are some of our favorites:

  • We love the natural sweetness this sauce brings to our hearty and nutritious Yeasted Whole-Wheat Waffles.
  • Amp the flavor to our already amazing Oatmeal Pancakes with a drizzle of this homemade blueberry coulis.
  • Spoon over ice cream. And if you’re looking for a tasty and unique pairing, be sure to try with our Sweet Corn Ice Cream.
  • For a blueberry-forward brunch, fill our Whole Wheat Crepes with fresh blueberries and top them with this homemade blueberry sauce.
  • Pair on a cheese board. Serve with baked brie or a brie en route or drizzle over goat cheese.
  • Stir a spoonful into a balsamic vinaigrette like our Maple Balsamic Vinaigrette or Walnut Balsamic Vinaigrette.
  • For a spin on a summertime classic – mix it into lemonade for a refreshing blueberry-flavored drink!
  • Drizzle over Angel Food Cake and add a dollop of whipped cream!

Make Ahead and Freezing

  • Make Ahead: This easy homemade blueberry sauce can be stored in an airtight container in the refrigerator for up to 10 days.
  • Freezing: This blueberry sauce can be frozen for up to 3 months. Thaw and stir well before serving.

Variations to Try

  • Add half of a vanilla bean and remove it in step 3 before pureeing. Alternatively, you could use a tiny splash of vanilla extract or vanilla bean paste.
  • Use a tablespoon of your favorite liquor. We like Grand Marnier or Frangelico in this blueberry sauce.
  • Use half blueberries and half raspberries, blackberries, or strawberries.
  • You can infuse the sauce with herbs such as sprigs of thyme, lavender, basil, or rosemary. Just be sure to remove the sprig before pureeing.
  • Add star anise, cinnamon stick, or cardamom pods in a cheesecloth sachet. After cooling, remove the sachet and puree.
homemade blueberry sauce in mason jar

At Healthy Seasonal Recipes, we specialize in cooking with fresh veggies and creating weeknight meals. Sign up HERE to get more produce-forward dinner ideas for FREE! If you make this recipe, please come back and leave a star rating and review. I would love to hear what you thought! Happy Cooking! ~Katie

Print

metal bowl

Blueberry Coulis Recipe


5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews


  • Author:
    Katie Webster

  • vitamix
    Total Time:
    1 hour (includes cooling time)

  • food processor
    Yield:
    2 Cups

Healthy Eating
Print Recipe

Katie
Pin Recipe

const share_pin_buttons = document.getElementsByClassName( ‘share-pin button’ );
if ( share_pin_buttons ) {
for ( let share_key = 0; share_key {
e.stopPropagation();
window.open(e.target.dataset.href,’targetWindow’,’toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500′);
return false;
} );
}
}

Description

Blueberry coulis is a traditional strained fruit sauce made with nothing more than blueberries, lemon juice, a splash of water, and a little sugar or honey. It is a delicious homemade blueberry sauce to spoon over ice cream or pancakes or to pair with a cheese board.


Ingredients

  • 1-pound blueberries, about 3 cups
  • 1/3 cup sugar, honey, agave or maple syrup
  • 2 tablespoons lemon juice
  • 2 tablespoons water



Instructions

  1. Stir blueberries, sugar (or other sweetener), lemon juice, and water in a medium saucepan. Place over medium heat and cook, stirring occasionally, until the mixture boils and the blueberries start to burst 6 to 9 minutes. 
  2. Remove from the heat and let cool. (Transfer to a metal bowl and set in the fridge, or submerge the saucepan in an ice bath to speed up this process.)
  3. Puree the blueberry mixture until completely smooth using a blender, food processor, or immersion blender.
  4. Set a fine mesh sieve over a medium bowl. Pour the puree into the sieve and run through with a silicone spatula. 
  5. Transfer to a jar and chill. Serve cold or at room temperature.

Notes

Ingredient Note: Frozen blueberries work great too, just make sure to stir them well. They will take a little longer to come to a simmer.

Tip: Classic coulis is strained through a fine sieve, but it can be enjoyed without straining. This is especially true if the mixture is pureed with a high powered blender or Vitamix. It will have a rustic or granular texture. 

Make Ahead: Store in the refrigerator in a clean jar or airtight container up to 10 days. Can be frozen up to 3 months.

  • vitamixPrep Time: 15 minutes
  • vitamixCook Time: 5 minutes
  • food processorCategory: Sauces and Condiments
  • Healthy EatingMethod: Stove Top
  • KatieCuisine: French

Nutrition

  • Serving Size: 2 Tablespoons
  • Calories: 33
  • Sugar: 7 g
  • Fat: 0 g
  • Carbohydrates: 8 g
  • Fiber: 1 g
  • Protein: 0 g

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.healthyseasonalrecipes.com/wp-admin/admin-ajax.php”,”ratingNonce”:””,”postId”:66611};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
window.addEventListener( ‘click’, e => {
let anchor = e.target;
if ( ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
if ( anchor.tagName === ‘A’ ) {
return;
}

anchor = anchor.closest( ‘a’ );
if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
history.pushState( {}, ”, selector );
}
};

(function( callback ) {
if ( document.readyState !== ‘loading’ ) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.smoothScroll.init();
});

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

Original source: https://www.healthyseasonalrecipes.com/blueberry-coulis/

You May Also Like