Unstuffed Cabbage – Easy Unstuffed Cabbage Roll Recipe!

By: Shelly Posted: Oct 18, 2023 Unstuffed cabbage served over rice on a white plate, with a large pot in the background.Unstuffed cabbage served over rice on a white plate, with a large pot in the background.

Unstuffed cabbage is a quicker way to enjoy the savory flavor of traditional cabbage rolls! This deconstructed version is made with juicy ground beef and pork combined with fire-roasted tomatoes, onions, and seasonings in a flavorful and easy one-pot meal.

Unstuffed cabbage served over rice on a white plate, with a large pot in the background.

Why You’ll Love This Unstuffed Cabbage Roll Recipe

Cabbage rolls are a traditional European meal, and this deconstructed version is fast becoming one of our favorite weeknight dinners! Here’s why you’ll want this recipe for rich and savory unstuffed cabbage on rotation, just in time for the cooler weather:

  • Time-saving. Short on time during the week? Make hearty unstuffed cabbage in 45 minutes or less from start to finish. The ingredients are budget-friendly, available pretty much everywhere, and easily customizable.
  • Amazing flavor. This recipe is quick to make and full of delicious flavor thanks to juicy ground meat, tangy tomatoes, caramelized onions, and a mouthwatering combination of herbs and spices. 
  • One-pot. Making traditional cabbage rolls casserole-style is the easiest way to enjoy all those awesome flavors with a fraction of the effort. Bring all the ingredients together in one pot on the stovetop instead!
  • Great leftovers. Make a big batch of unstuffed cabbage and save the leftovers for satisfying meals, all week long. This recipe stores and freezes well, and there are so many ways that you can serve it. 

We love turning inexpensive, easy ingredients into delicious one-skillet dinners. If you’re looking for another weeknight one-pot wonder, try this cheesy skillet chicken parmesan or this creamy beef pasta!

Ingredients for unstuffed cabbage.Ingredients for unstuffed cabbage.

Ingredients in Unstuffed Cabbage

You might be thinking, “That looks like a lot of ingredients!” But don’t worry. Everything you see here is easy to find in just about any grocery store. Below, I include some quick ingredient notes to get you started. Don’t forget to scroll to the recipe card at the bottom of the post with the complete ingredients list, amounts, and recipe instructions. 

  • Olive Oil, Onion, and Garlic – Diced onion and garlic sautéd in oil form the aromatic flavor base of the soup.
  • Ground Meat – I like to use a combination of ground pork sausage and lean ground beef for the utmost flavor. You can easily make this recipe with any ground meat you have on hand, though. See the section further on for variation ideas.
  • Tomatoes  – Canned tomatoes work great, and fire-roasted tomatoes bring another layer of flavor. You’ll also need a can of tomato paste.
  • Apple Cider Vinegar – Red wine vinegar, white wine vinegar, or even balsamic also works.
  • Worcestershire Sauce – To give this unstuffed cabbage a hit of umami richness.
  • Seasonings – I use thyme, paprika (sweet or smoked), brown sugar, chili powder, salt, pepper, and beef bouillon. I’m partial to the Better Than Bouillon brand.
  • Cabbage – You’ll need chopped or shredded green cabbage. You can use two small cabbages or one medium to large-sized cabbage, enough to fill 10 cups.

What Kind of Cabbage Should I Use?

In short: Any kind that you’d like! Savoy cabbage (also called winter cabbage) and napa cabbage are the first choices when making cabbage rolls, and they’ll also work well here. But the beauty of unstuffed cabbage is that you can make this recipe with pretty much any type of cabbage you can find. White cabbage and green cabbage are good options. Even red cabbage will work, though keep in mind that it will bleed color into the dish.

How to Make Unstuffed Cabbage

Why spend hours prepping and rolling cabbage rolls when packing all that goodness into one pot is this easy? Let’s get started!

Ground beef and pork sausage added to diced onion in a skillet.Ground beef and pork sausage added to diced onion in a skillet. Tomatoes, tomato paste, and seasonings added to browned ground beef in a skillet.Tomatoes, tomato paste, and seasonings added to browned ground beef in a skillet.

  • Sauté. First, sauté the onions in a large pot with oil. Once the onions are softened, add the ground beef and pork sausage, and cook until thoroughly browned. Finally, stir in the garlic.
  • Combine. Drain any excess grease from the pan before adding the tomatoes and tomato paste, vinegar, Worcestershire sauce, seasonings, and bouillon. Bring the contents to a boil.

Shredded cabbage added to a skillet with ground beef and tomatoes.Shredded cabbage added to a skillet with ground beef and tomatoes. Unstuffed cabbage in a skillet.Unstuffed cabbage in a skillet.

  • Add the cabbage. Next, stir in the shredded cabbage and then place the lid on the pot. Lower the heat and simmer the cabbage for 25-30 minutes, until tender.
  • Serve and enjoy! Dish up this unstuffed cabbage warm over fluffy rice with your favorite sides. See below for ideas.

Close up of unstuffed cabbage in a skillet.Close up of unstuffed cabbage in a skillet.

Recipe Tips and Variation Ideas

Here are some last-minute tips for the best unstuffed cabbage, along with some recipe variations that you can try:

  • Don’t overcook. Unless you’re going for mushy cabbage, be careful that you don’t overcook it. My favorite texture for cabbage is softened but still a little crisp. On the other hand, if your cooked cabbage is on the tougher side, it’s a sign that it may need to cook for longer.
  • Change up the meat. In place of pork sausage, feel free to make this recipe with only ground beef. You can use other leaner meat, too, like ground chicken or ground turkey. Spicy Italian sausage would also give this dish a nice kick.
  • More veggies. You can definitely fill this unstuffed cabbage recipe with any vegetables your heart desires (or any veggies that you have in the fridge). Try dicing up zucchini, mushrooms, celery, and carrots, or add in frozen peas, spinach, or kale.
  • Add raisins. In place of brown sugar, add raisins! Golden raisins or Sultanas add a delicious sweet balance to the tangy tomato sauce.
  • Different seasonings. If you don’t have chili powder, use cayenne pepper and cumin, or you can play around with different spices according to your preference. In place of thyme, try rosemary, basil, or Italian seasoning.

Overhead view of unstuffed cabbage served over rice on a white plate next to more cabbage in a large pot.Overhead view of unstuffed cabbage served over rice on a white plate next to more cabbage in a large pot.

Serving Suggestions

We love unstuffed cabbage served over fluffy white rice (or Instant Pot butter rice) or homemade egg noodles, topped with sour cream. For an easy vegetable side dish, try tender-crisp air fryer asparagus, steamed or roasted broccoli, a cool cucumber salad, or a flavorful Mediterranean couscous salad. To really round out your meal, serve your unstuffed cabbage with a basket of sour cream cornbread or homemade baguette for mopping up extra tomato broth.

Looking for an easy meal prep idea? Make unstuffed cabbage bowls over a bed of rice or grains. And don’t forget homemade Polish kolaczki for dessert!

Overhead view of unstuffed cabbage served over rice on a white plate next to a fork.Overhead view of unstuffed cabbage served over rice on a white plate next to a fork.

Storing and Reheating Unstuffed Cabbage

  • Fridge. This recipe makes great leftovers. Allow your unstuffed cabbage to cool to room temperature, and then store it airtight. It keeps in the fridge for up to 5 days. Enjoy tasty meals for the rest of the week!
  • To Reheat. Warm leftovers in the microwave or in a pot on the stovetop until they’re hot throughout.
  • Freezer. Cool the unstuffed cabbage completely, and then transfer it to an airtight container to freeze for up to 2-3 months. Thaw it in the fridge before reheating.

More Cozy One Pot Recipes 

Print clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon


Unstuffed cabbage is a quicker way to enjoy the savory flavor of traditional cabbage rolls! This is an easy one-pot meal made with juicy ground beef and pork combined with fire-roasted tomatoes, onions, and seasonings.

  • 1 tablespoon olive oil
  • 1 cup onion, diced
  • 1 pound ground pork sausage
  • 1 pound lean ground beef
  • 3 garlic cloves, minced
    2 (14.5-ounce) cans of fire-roasted diced tomatoes
  • 1 (6-ounce) can of tomato paste
  • 2 tablespoons apple cider vinegar
  • 1 tablespoon Worcestershire sauce
  • 1 teaspoon dried thyme
  • 1/2 teaspoon smoked paprika
  • 1 teaspoon beef bouillon (I like to use Better Than Bouillon brand)
  • 2 tablespoons brown sugar
  • 1 tablespoon chili powder
  • 1 teaspoon kosher salt
  • 1 teaspoon freshly ground black pepper
  • 10 cups chopped cabbage
  1. In a 5-quart Dutch oven (or 10-inch deep skillet), heat the olive oil over medium heat. Add in the onions and cook until softened.
  2. Turn the heat up to medium-high, add in the ground pork and ground beef, and cook until no more pink remains, breaking apart any large pieces. Add in the garlic and cook for 1 minute. Drain any excess liquid or fat from the pot.
  3. Add in the diced tomatoes, tomato paste, vinegar, Worcestershire sauce, thyme, smoked paprika, bouillon, brown sugar, chili powder, salt, and pepper. Stir to combine and bring to a boil. Add in the cabbage, stir to incorporate, and then cover the pot. Reduce the heat to medium-low and cook for 25 – 30 minutes, or until the cabbage is to desired tenderness.
  4. Serve warm.


  • You can serve this over rice as an option.
  • Store airtight in the refrigerator for up to 5 days.

Keywords: unstuffed cabbage, unstuffed cabbage rolls, unstuffed cabbage casserole

D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]}; window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”)); window.tastyRecipesFormatAmount = function(amount, el) { if ( parseFloat( amount ) === parseInt( amount ) ) { return amount; } var roundType = ‘frac’; if (typeof el.dataset.amountShouldRound !== ‘undefined’) { if (‘false’ != el.dataset.amountShouldRound) { if ( ‘number’ === el.dataset.amountShouldRound ) { roundType = ‘number’; } else if (‘frac’ === el.dataset.amountShouldRound) { roundType = ‘frac’ } else if (‘vulgar’ === el.dataset.amountShouldRound) { roundType = ‘vulgar’ } else { roundType = ‘integer’; } } } if (‘number’ === roundType) { amount = Number.parseFloat(amount).toPrecision(2); } else if (‘integer’ === roundType) { amount = Math.round(amount); } else if (‘frac’ === roundType || ‘vulgar’ === roundType) { var denom = 8; if (typeof el.dataset.unit !== ‘undefined’) { var unit = el.dataset.unit; if ([‘cups’,’cup’,’c’].includes(unit)) { denom = 4; if (0.125 === amount) { denom = 8; } if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) { denom = 6; } } if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) { denom = 2; } if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) { denom = 8; } } var amountArray = frac.cont( amount, denom, true ); var newAmount = ”; if ( amountArray[1] !== 0 ) { newAmount = amountArray[1] + ‘/’ + amountArray[2]; if (‘vulgar’ === roundType) { Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) { if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) { newAmount = vulgar; } }); } } if ( newAmount ) { newAmount = ‘ ‘ + newAmount; } if ( amountArray[0] ) { newAmount = amountArray[0] + newAmount; } amount = newAmount; } return amount; } window.tastyRecipesUpdatePrintLink = () => { const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ ); const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ ); // Use the first print button found as the canonical URL source. const printButton = document.querySelector( ‘.tasty-recipes-print-button’ ); // If no print button is available, we can’t reliably update its href. if ( ! printButton ) { return; } const printURL = new URL( printButton.href ); const searchParams = new URLSearchParams( printURL.search ); const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ ); const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ ); let unit = ”; let scale = ”; if ( unitButton ) { unit = unitButton.dataset.unitType; searchParams.delete(‘unit’); searchParams.set( ‘unit’, unit ); } if ( scaleButton ) { scale = scaleButton.dataset.amount; searchParams.set( ‘scale’, scale ); } const paramString = searchParams.toString(); const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString; printLinks.forEach( ( el ) => { el.href = newURL; }); printButtons.forEach( ( el ) => { el.href = newURL; }); } // When the document loads, look for unit and scale parameters and setup the recipe card // to reflect those values. document.addEventListener( ‘DOMContentLoaded’, () => { // Only reflect URL parameters on the print view. if ( ! window.location.href.includes( ‘/print/’ ) ) { return; } const searchParams = new URLSearchParams( window.location.search ); const unit = searchParams.get( ‘unit’ ); const scale = searchParams.get( ‘scale’ ); if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) { document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click(); } if ( scale && Number(scale) > 0 ) { document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click(); } }); }()); (function(){ var buttonClass = ‘tasty-recipes-scale-button’, buttonActiveClass = ‘tasty-recipes-scale-button-active’, buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’); if ( ! buttons ) { return; } buttons.forEach(function(button){ button.addEventListener(‘click’, function(event){ event.preventDefault(); var recipe = event.target.closest(‘.tasty-recipes’); if ( ! recipe ) { return; } var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass); otherButtons.forEach(function(bt){ bt.classList.remove(buttonActiveClass); }); button.classList.add(buttonActiveClass); var scalables = recipe.querySelectorAll(‘span[data-amount]’); var buttonAmount = parseFloat( button.dataset.amount ); scalables.forEach(function(scalable){ if (typeof scalable.dataset.amountOriginalType === ‘undefined’ && typeof scalable.dataset.nfOriginal === ‘undefined’) { if (-1 !== scalable.innerText.indexOf(‘/’)) { scalable.dataset.amountOriginalType = ‘frac’; } if (-1 !== scalable.innerText.indexOf(‘.’)) { scalable.dataset.amountOriginalType = ‘number’; } Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) { if (-1 !== scalable.innerText.indexOf(vulgar)) { scalable.dataset.amountOriginalType = ‘vulgar’; } }); if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) { scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType; } } var amount = parseFloat( scalable.dataset.amount ) * buttonAmount; amount = window.tastyRecipesFormatAmount(amount, scalable); if ( typeof scalable.dataset.unit !== ‘undefined’ ) { if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) { if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) { amount += ‘ ‘ + scalable.dataset.unit; } } } scalable.innerText = amount; }); var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’); nonNumerics.forEach(function(nonNumeric){ var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’); if ( indicator ) { nonNumeric.removeChild(indicator); } if ( 1 !== buttonAmount ) { var indicator = document.createElement(‘span’); indicator.setAttribute(‘data-non-numeric-label’, true); var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’); indicator.appendChild(text); nonNumeric.appendChild(indicator); } }); window.tastyRecipesUpdatePrintLink(); }); }); }()); 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) { checkbox.checked ? this.lock() : 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”, event => { 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.ratings = { init( min_rating ) { this.min_rating = min_rating; this.recipeRatingReflectInRespondSection(); this.addBodyClassBasedOnSelectedRating(); this.backwardCompRespondRatingPosition(); }, recipeRatingReflectInRespondSection() { const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’); if (ratings.length { this.fireRatingInRespond( event.target.dataset.rating ); } ); } }, fireRatingInRespond( rating ) { const ratingInput = document.querySelector(‘.tasty-recipes-rating[value=”‘ + rating + ‘”]’); if ( ! ratingInput ) { return; } ratingInput.click(); }, addBodyClassBasedOnSelectedRating() { const ratingInputs = document.querySelectorAll(‘input.tasty-recipes-rating’); if ( ratingInputs.length { let selectedRating = event.target.getAttribute( ‘value’ ); this.handleBodyClassByRating( selectedRating ); this._toggle_comment_textarea_required( selectedRating ); } ); } }, handleBodyClassByRating( rating ) { if ( rating = comment_textarea.length ) { return; } if ( rating < this.min_rating ) { comment_textarea.setAttribute( 'required', '' ); return; } comment_textarea.removeAttribute('required'); }, backwardCompRespondRatingPosition() { const ratings_buttons = document.querySelector( '#respond .tasty-recipes-ratings-buttons' ); if ( ratings_buttons.length { if ( rating_span === event.target ) { return; } rating_span.previousElementSibling.click(); } ); } } }; (function(callback) { if (document.readyState !== "loading") { callback(); } else { document.addEventListener("DOMContentLoaded", callback); } })(() => { window.TastyRecipes.ratings.init( window.tasty_recipes_min_rating ); }); ]]>

Want To Save This Recipe?

Find more recipes like this:


Leave a Reply