Vegetarian Meatloaf


This vegetarian meatloaf is hearty and pleases even the most passionate meat eaters! This family favorite recipe with loads of 5 star reviews from readers.

Vegetarian Meatloaf

Every now and then you come across a recipe that is a cut above the rest – one that makes everything you’ve made before pale in comparison. I present: my vegetarian meatloaf recipe! 

This meatloaf is made of nuts, rice, mushrooms, herbs, and cheese. Somehow, it melds into a texture just like a meatloaf that tastes amazing – maybe even better than the meat version! It’s perfect for dinner parties, or even Thanksgiving for Christmas dinner. My mom always requests this for family dinners, and she’s a huge meat lover – so that’s saying something.

The secrets to a meaty flavor and texture

This meatloaf is incredibly hearty, the perfect vegetarian recipe for meat lovers. My mom is a huge carnivore, and she absolutely adores this recipe! She even requests to make it every time that we come home for a visit.

It’s kind of mind-boggling how tasty this vegetarian meatloaf turns out. You’d almost swear from the texture that it’s an actual meatloaf! Here are some of the secrets:

  1. Mushrooms: Once the meatloaf is cooked, you won’t know there are any mushrooms. But they are essential to the savory flavor and a chewy texture.
  2. Toasted nuts. Another secret is a mixture of cashews and walnuts that are toasted in the oven until golden and fragrant. Combined with the sautéed mushrooms, toasted nuts add a subtle meaty flavor to the dish and give this nut loaf some texture.
  3. Swiss cheese & cottage cheese: Swiss cheese brings a subtle meatiness and cottage cheese brings in the perfect texture complement.
Vegetarian Meatloaf

5 star reader reviews

⭐⭐⭐⭐⭐ “I had to tell you how fantastic this vegetarian meatloaf was! So flavorful and easy to make! Even my son, who loves his meat, loved it!” -Karin

⭐⭐⭐⭐⭐ “This Vegetarian Meatloaf is Freaking AWESOME!! Worth the time to chop everything up. Definitely will make it again.” -Nora

Recipe overview

This vegetarian meatloaf recipe requires a bit of time to make, but the end result is totally worth it! To make this veggie meatloaf, here are the basic steps (or go to the full recipe below):

  1. Cook the rice: Cook the brown rice. Doing this in advance cuts down on prep time.
  2. Toast the nuts: Toast walnuts and cashews in the oven until golden brown.
  3. Sauté the onion and mushrooms: Sauté the veggies with herbs and spices.
  4. Mix: Combine the rice, nuts, and mushroom mixture with parsley, cottage cheese, Swiss cheese, eggs, salt, and pepper.
  5. Bake: Butter a loaf pan, line the bottom with parchment paper and butter again. Pour in the mixture and bake about 1 hour at 375°F or until golden brown. Allow to cool about 20 minutes before slicing.

Pro prep tip

This recipe does take a bit of time to put together. If you have a partner, friend, or child, invite them along into the fun! It will be much quicker. I only make this on weekends, days off, or holidays: it’s too involved for a weeknight in my opinion.

Storing leftovers

This vegetarian meatloaf stores very well as leftovers! Here’s what to do:

  • Refrigerate. Leftovers can be stored for a 2 to 3 days in the refrigerator.
  • Freeze. This vegetarian meatloaf freezes perfectly! Slice it into pieces and place it in a sealable container in the freezer. Reheat the meatloaf in a 375°F oven.

Sides to pair with meatloaf

If you’re entertaining and looking for dinner party recipes, this vegetarian meatloaf is a fantastic fit for a dinner party. Our family makes it often over the holidays, as a vegetarian Thanksgiving recipe or for Christmas dinner. It always pleases meat eaters: even my meat and potatoes grandparents!

A few side dishes that work well with meatloaf:

Dietary notes

This vegetarian meatloaf recipe is vegetarian and gluten free.

Frequently asked questions

Can I make this ahead of time?

Yes! You can either prepare it a day ahead and refrigerate before baking, or bake and freeze in slices. To reheat frozen slices, warm in a 375°F oven until heated through.

Can I substitute different cheeses?

Yes, many commenters have successfully used cheddar, mozzarella, or Gruyere instead of Swiss cheese. The cottage cheese is important for texture but can be replaced with Greek yogurt.

What if I’m allergic to nuts?

Unfortunately, the nuts are essential to this recipe’s texture and structure. There’s currently no tested nut-free version.

How finely should I chop the nuts?

Aim for a coarse chop, similar to the texture of panko breadcrumbs. Don’t grind them into a powder—some texture is good.

What mushrooms work best?

While the recipe calls for a mix of cremini and shiitake, many commenters have successfully used just cremini or button mushrooms. The mushrooms are essential to the recipe’s texture and flavor and can’t be omitted.

Print

Vegetarian Meatloaf (Fan Favorite!)

Vegetarian Meatloaf

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;
} );
}
}

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

4.9 from 71 reviews

This vegetarian meatloaf is hearty and pleases even the most passionate of meat eaters! It’s a family favorite dinner party recipe.

  • Author: Sonja Overhiser
  • Prep Time: 1 hour
  • Cook Time: 1 hour
  • Total Time: 2 hours
  • Yield: 8 to 10
  • Category: Main Dish
  • Method: Baked
  • Cuisine: American

Ingredients

  • 1 ½ cups cooked brown rice 
  • 1 ½ cups walnuts
  • ½ cup cashews
  • 1 yellow onion
  • 3 cloves garlic
  • 3 ounces shiitake mushrooms
  • 3 ounces baby bella mushrooms (aka cremini)
  • 2 tablespoons chopped fresh flat-leaf parsley
  • 2 tablespoons olive oil
  • 1 teaspoon dried marjoram
  • 1 teaspoon dried thyme
  • 1 teaspoon dried sage
  • 4 large eggs
  • 1 cup cottage cheese
  • 12 ounces Swiss cheese, grated
  • 1 teaspoon kosher salt
  • ½ teaspoon freshly ground black pepper

Instructions

  1. Prepare the brown rice using Stovetop Brown Rice or Instant Pot Brown Rice. (You’ll need ½ cup dry rice to yield 1 ½ cups cooked; or you cook 1 cup dry rice and save the leftovers.)
  2. Preheat oven to 375°F.
  3. Place 1 ½ cup walnuts and ½ cup cashews on a baking sheet and toast for 8-10 minutes, until lightly browned. Allow to cool.
  4. Meanwhile, finely chop 1 onion and mince 3 cloves garlic. Clean and finely chop the mushrooms. Finely chop the 2 tablespoons fresh parsley. When the nuts have cooled, finely chop them with a knife or in a food processor.
  5. In a large skillet, heat about 2 tablespoons olive oil. Add the onion and garlic and cook until translucent, about 3 minutes. Add the mushrooms, 1 teaspoon marjoram, 1 teaspoon thyme, and 1 teaspoon sage. Cook about 5 minutes, until the mushrooms are golden. Transfer to a large bowl.
  6. In a small bowl, lightly beat together 4 eggs.
  7. In the large bowl, combine the onion and mushroom mixture with the toasted walnuts and cashews, parsley, 1 ½ cups cooked rice, 1 cup cottage cheese, 12 ounces Swiss cheese, beaten eggs, 1 teaspoon kosher salt, and ½ teaspoon freshly ground black pepper.
  8. Butter a 9-inch loaf pan, line the bottom with parchment paper, and butter it again. Pour the mixture from the bowl into the pan.
  9. Bake 1 hour until golden brown. Let cool in pan for 20 minutes, then invert loaf and remove from pan. Slice into pieces and serve warm. Leftovers can be stored for a few day in the refrigerator or a few months in the freezer (cut into pieces). Reheat in a 375°F oven.

Notes

Adapted from Martha Stewart

(function(){
window.addEventListener( ‘message’, function( event ){
if ( ( ‘https://nutrifox.com’ !== event.origin && ‘https://nutrifox.test’ !== event.origin ) ||
typeof event.data !== ‘string’ ) {
return;
}
var payload = JSON.parse( event.data );
switch ( payload.event ) {
case ‘setHeight’:
var iframe = document.getElementById( ‘nutrifox-label-‘ + payload.recipeId );
iframe.style.height = payload.height + ‘px’;
break;
}
} );
}());

Did you love this recipe?

Get our free newsletter with all of our best recipes!

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

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

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’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => 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 );
});

Leave a Reply

Your email address will not be published. Required fields are marked *