Borscht soup is a Ukrainian recipe made with beets, cabbage, and beef or pork. It's hearty, comforting, and delicious, a soup you'll love to make any time of year.

Although it's made in many Eastern European countries, borscht has its origins in Ukraine, don't let anyone tell you different! It's the national dish and I'm so proud to share this recipe that is such an iconic, integral part of my Ukrainian cultural heritage.
My great aunt made borscht for our family celebrations and it was usually a vegetarian version. However, I make my traditional Ukrainian borscht soup recipe with either beef short ribs or with bone-in pork shoulder.
Of course beets are the star of the show, but what makes borscht so rich and delicious is the long-simmered stock, which imparts deep flavor to the vegetables in the soup.
I love sharing the recipes that I grew up eating in my Ukrainian family. Holubtsi (Ukrainian Cabbage Rolls) and Varenyky (Ukrainian dumplings) were my childhood favorites at grandma's house! And when temperatures heat up outside try my vegetarian Cold Borscht recipe to cool you down!
Jump to:
Borscht ingredients
There are as many versions of this classic soup as there are Ukrainian grandmothers. Ingredients in borscht can vary by region and season, but you'll generally always find beets, cabbage, and potatoes.
Choosing pork shoulder when making borscht stock means you'll end up with more meat in the soup so it's a bit more filling.
- Beets: Borscht's main ingredient is red beets! The beets give the soup a gorgeous color and an earthy, sweet flavor. We'll use them to make the broth and add them into the soup as well.
- Beef short ribs, bone-in pork shoulder, or pork ribs: You can use beef or pork to make the stock for borscht. I usually make mine with bone-in pork shoulder. Choosing pork shoulder when making borscht stock means you'll end up with more meat in the soup since it only has one bone in it. This makes it a bit more filling and stretches it to more servings. The most important thing is that the meat must have a bone in it.
- Cabbage: What would borscht be without cabbage? It's hearty and takes on the color released by the beets. Choose a green cabbage that is firm and heavy for its size.
- Potatoes: I like Yukon Gold potatoes for this soup recipe because they hold their shape. (If you like russet potatoes, use them to make my Ukrainian potato pancakes!)
- Onions, carrots, and tomato paste: These will be some of the aromatics in the stock, they'll be cooked down into a sofrito using technique common in Ukrainian cooking called zazharka or smazhennya.
- Sunflower oil: Sunflowers are the symbol of Ukraine, and using sunflower oil in our borscht recipe imparts authentic Ukrainian flavor. You can find it at Trader Joe's and online. If you must substitute, try a neutral oil like grapeseed or canola.
- Kidney beans: Beans are an optional ingredient in borscht. You can substitute other kinds of canned beans in the soup like cannelini beans or lima beans.
- Apple cider vinegar: Vinegar in borscht does two things—it helps the beets hold their color, and it brightens up the largely earthy flavors of the soup. You can adjust the amount to your taste.
- Bay leaves and kosher salt: To season the stock.
- Sour cream and fresh dill: For serving.
How to make borscht soup
Making this borscht soup recipe is easy, with very little active cooking time. Simmering the stock takes time, but it's passive and allows the meat to tenderize.
Step 1: Make the borscht soup stock
Peel the onion, but do not chop. Scrub ½ pound of the beets and roughly chop. Do not peel them.
Add the beef or pork, onion, chopped beets, one large or two small bay leaves, 1 tablespoon of apple cider vinegar and 1 tablespoon of kosher salt to a large soup pot or Dutch oven.
Cover with 10 cups of cold water and bring to a boil. Reduce to a simmer, cover, and cook for about 2 hours or until the meat is falling off the bone. Check it occasionally and skim off any scum that rises to the top.
Step 2: Cook the beets
While the stock simmers, cook the remaining beets. Scrub them clean, but don't peel or trim them.
Place the beets in a large sauce pan with enough water to cover them. Bring to a boil and cook until they are easily pierced with a knife, about 40 minutes. Drain and set aside to cool.
Pro tip
You may have to add more water if it evaporates too much as the beets are boiling.
Step 3: Sweat the carrots and onions for the "zazharka"
Meanwhile, dice the onions finely, and grate the carrots on the large holes of a box grater.
Add 2 tablespoons of sunflower oil to a skillet over medium-high heat. When the oil starts to shimmer, add the carrots and onions and cook until they are soft and translucent to make the zazharka—the Ukrainian version of mirepoix.
Add the tomato paste to the skillet and stir for about 2 minutes until it is fully incorporated and fragrant. Set the carrot and onion mixture aside while the borscht stock and beets continue to cook.
Want to save this recipe?
You'll be added to my email list!
Step 4: Peel and grate the beets
Once the beets are cool enough to handle, peel them with a paring knife, then grate them on the large holes of a box grater and set aside.
Step 5: Strain the borscht stock
After about 2 hours, the beef or pork should be falling off the bone, if not cook 30 minutes longer and check again. Once the meat is tender, remove it from the pot and set aside.
Strain the soup by pouring the stock into a colander over a sauce pan that is large enough to hold all the liquid.
Return the strained borscht stock to the Dutch oven or soup pot and bring back to a simmer. Discard the onion and beets left behind in the colander.
Step 6: Add the cabbage and potatoes to the soup
Use a good chef's knife and shred the cabbage into long, thin slices.
Peel the potatoes and cut into a ½-inch dice.
Add the potatoes, cabbage, and carrot/onion mixture to the borscht soup broth and simmer for 10-15 minutes.
Step 7: Add beets, pork and beans to the borscht soup
While the potatoes and cabbage are simmering, shred the meat and discard the bone(s).
Add the grated beets, beef or pork, kidney beans, and the remaining cider vinegar to the borscht and simmer for another 10 minutes, until the potatoes are fork tender.
Taste and add more salt or vinegar if desired. Remove from heat and let stand for a few minutes to allow the gorgeous pink color to deepen. Serve topped with a dollop of sour cream and some fresh dill.
Expert tips
- The cider vinegar helps the beets and the borscht soup hold their beautiful pink color. You can add more or a little less vinegar according to your taste. If you don't have apple cider vinegar, plain white vinegar will also work.
- The color of borscht will deepen the longer the soup rests. Once you take it off the heat, let it sit for 5-10 minutes, then stir. It will be even more pink the next day!
- Cooking the beets before grating them into the soup gives the borscht a sweeter flavor and a deeper color. If you prefer a crisper texture, you can cut peeled raw beets into matchsticks and add them at the same time as the potatoes.
- If you'd like to add more veggies and sweetness, throw in some diced red bell peppers!
How to serve borscht soup
Serve borscht as the first course of a complete Ukrainian or Eastern European meal, or on its own as a hearty main course.
Top borscht with sour cream and fresh dill. (If you're like me, that would be LOTS of fresh dill.) And you have to serve beet borscht with some bread, preferably Pampushky, which are Ukrainian garlic rolls, to soak up all that gorgeous purple broth.
FAQ
Yes! This borscht recipe can be made with meat or without. If you'd like to make it vegetarian, you can substitute dried mushrooms for the meat in the stock and simmer for about 30 minutes, or just use vegetable stock as the base of your soup and follow the instructions as written.
Yes! Borscht is one of my favorite soups to freeze. Chill it in the refrigerator overnight in an airtight freezer-proof container, then freeze for up to two months.
No, do not use canned beets in borscht. You can substitute the vacuum packed cooked beets you find in the produce department, but they are much more expensive. Boiling, peeling, and grating the beets is easy and quick, and it's worth the effort!
Yes! If you'd like to lighten things up and make this borscht soup recipe with chicken instead of beef or pork, use the same amount of bone-in chicken thighs to make the chicken stock. Remove the skin before adding the shredded chicken back into the soup.
Make ahead and storage
You can make borscht up to two days ahead. The color and the flavors will deepen as the soup rests in the refrigerator.
- To store: Place in an airtight container in the refrigerator for up to 5 days.
- To reheat: Place over medium-low heat in a covered saucepan until warmed through. Don't bring it to a boil again, or you risk losing some of the color.
- To freeze: Place in an airtight freezer-safe container for up to two months.
More soup recipes
- Tuscan White Bean Soup is a light vegetarian soup that gets deep flavor from fresh rosemary and a parmesan cheese rind.
- Sweet Potato Corn Chowder is hearty and creamy, the secret ingredient is curry powder!
- Potato Cheese Soup is my favorite soup to make on a weeknight when the weather turns cold.
This easy borscht soup recipe is loaded with beets, cabbage and authentic Ukrainian flavor!
- Using beets in both the borscht stock and in the soup means you get the deepest color and the best beet flavor!
- Cider vinegar mimics the tang of traditional Ukrainian fermented beet or tomato kvas, adding brightness, and it balances the sweetness.
- Thin shreds of cabbage add great texture to the soup.
- Make borscht ahead of time and freeze it for a hearty winter meal at your fingertips.
If you enjoy this recipe, please leave me a 5-star rating ⭐️⭐️⭐️⭐️⭐️ in the recipe card! It really helps others find my content and helps my business grow! Sign up for my newsletter for recipes delivered to your inbox and follow me on Instagram and Pinterest! Thank you!
Recipe
Borscht Soup Recipe
Want to save this recipe?
You'll be added to my email list!
Equipment
- 6 quart Dutch oven or large stock pot
- silicone spatula or wooden spoon
Ingredients
- 2 pounds bone-in pork shoulder or beef short ribs or pork ribs
- 1½ pounds red beets
- 10 cups cold water
- 1 bay leaf
- 2 onions divided
- 1 carrot
- 2 tablespoons sunflower oil or grapeseed oil, or canola oil
- 1 tablespoon tomato paste
- 1 large potato
- 12-16 ounces green cabbage
- 1 15-ounce can kidney beans drained and rinsed
- 6 tablespoons apple cider vinegar divided, see note
- 1 tablespoon kosher salt plus more to taste
- sour cream and fresh dill for serving
Instructions
- Peel one onion, but do not chop. Scrub ½ pound of the beets, trim off any root or stem, and roughly chop. Do not peel them.
- Add the beef or pork, onion, chopped beets, the bay leaf, 1 tablespoon of apple cider vinegar and 1 tablespoon of kosher salt to a large soup pot or Dutch oven.
- Add 10 cups of cold water and bring to a boil. Reduce to a simmer, cover, and cook for about 2 hours or until the meat is falling off the bone. Check it occasionally and skim off any scum that rises to the top.
- While the stock simmers, cook the remaining beets. Scrub them clean. Don't peel or trim them. Place the beets in a large sauce pan with enough water to cover them. Bring to a boil and cook until they are easily pierced with a knife, about 40 minutes. Drain and set aside to cool.
- Meanwhile, dice the onions finely, and grate the carrots on the large holes of a box grater.
- Add 2 tablespoons of sunflower oil to a skillet over medium-high heat. When the oil starts to shimmer, add the carrots and onions and cook until they are soft and translucent. This is the zazharka—the Ukrainian version of mirepoix.
- Add the tomato paste to the skillet and stir for about 2 minutes until it is fully incorporated and fragrant. Season with a pinch of salt. Set the carrot and onion mixture aside while the borscht stock and beets continue to cook.
- Once the beets are cool enough to handle, peel them with a paring knife, then grate them on the large holes of a box grater and set aside.
- After about 2 hours, the beef or pork should be falling off the bone, if not cook 30 minutes longer and check again. Once the meat is tender, remove it from the pot and set aside.
- Strain the stock by pouring it into a colander over a sauce pan that is large enough to hold all the liquid. Return the strained borscht stock to the Dutch oven or soup pot and bring back to a simmer. Discard the onion and beets left behind in the colander.
- Use a good chef's knife and shred the cabbage into long, thin slices. Peel the potatoes and cut into a ½-inch dice.
- Add the potatoes, cabbage and carrot/onion mixture to the borscht soup broth and simmer for 10-15 minutes.
- While the potatoes and cabbage are simmering, shred the meat and discard the bone(s).
- Add the grated beets, beef or pork, rinsed kidney beans, and the remaining 5 tablespoons of cider vinegar to the borscht and simmer for another 10 minutes, until the potatoes are fork tender.
- Taste and add more salt or vinegar if desired. Remove from heat and let stand for a few minutes to allow the gorgeous pink color to deepen.
- Serve topped with a dollop of sour cream and some fresh dill.
Notes
- The cider vinegar helps the beets and the borscht soup hold their beautiful pink color. You can add more or a little less vinegar according to your taste. If you don't have apple cider vinegar, plain white vinegar will also work.
- The color of borscht will deepen the longer the soup rests. Once you take it off the heat, let it sit for 5-10 minutes, then stir. It will be even more pink the next day!
- Cooking the beets before grating them and adding into the soup gives the borscht a sweeter flavor and a deeper color. If you prefer a crisper texture, cut peeled raw beets into matchsticks and add them at the same time as the potatoes.
- If you'd like to add more veggies and sweetness, throw in some diced red bell peppers!
Leave a Reply