Deep red beets, tender cabbage, potatoes, carrots, beef, tomato, garlic, and dill come together in this hearty Ukrainian-style borscht. The soup is earthy, savory, gently sweet, and pleasantly tangy, with enough acidity to balance the natural sweetness of the beets. A spoonful of sour cream softens the sharper flavors at the table, while plenty of fresh dill gives each bowl a welcome burst of freshness.
There is no single universal borscht recipe. Families and regions prepare it differently, and recipes may be made with beef, pork, beans, mushrooms, fermented beet liquid, fresh tomatoes, tomato paste, potatoes, cabbage, or no meat at all. This version is a substantial beef-and-vegetable borscht designed for the home kitchen. It keeps the beets vibrant, gives the broth plenty of savory depth, and finishes with vinegar, garlic, and dill so the soup tastes lively rather than heavy.
Like many soups and stews, borscht is especially good the next day, when the vegetables, herbs, broth, and acidity have had time to settle together.
🥣 Ukrainian-Style Borscht Recipe
Prep time: 30 minutes
Cook time: About 2 hours
Total time: About 2 hours 30 minutes
Servings: 8
🛒 Ingredients
For the Beef Broth
- 1 1/2 pounds beef chuck, cut into 1 1/2-inch pieces
- 10 cups water or low-sodium beef broth
- 2 bay leaves
- 1 teaspoon kosher salt, plus more to taste
For the Vegetables
- 3 medium beets, about 1 1/2 pounds total
- 2 tablespoons neutral oil or olive oil
- 1 large yellow onion, diced
- 2 medium carrots, grated or cut into thin matchsticks
- 2 tablespoons tomato paste
- 3 medium Yukon Gold or other waxy potatoes, peeled and cubed
- 4 cups finely shredded green cabbage
- 3 cloves garlic, finely minced
For Finishing
- 2 to 3 tablespoons red wine vinegar, apple cider vinegar, or fresh lemon juice
- 1 teaspoon granulated sugar, optional
- Freshly ground black pepper
- 1/3 cup chopped fresh dill
- 2 tablespoons chopped fresh parsley, optional
For Serving
- Sour cream
- Fresh dill
- Rye bread or crusty bread
🥩 Build the Beef Broth
Place the beef in a large Dutch oven or soup pot. Add the water or broth, bay leaves, and 1 teaspoon salt. Bring the pot to a gentle boil over medium-high heat, skimming away any foam that rises to the surface. Reduce the heat to low, partially cover the pot, and simmer for about 60 to 75 minutes, until the beef has started to become tender. It does not need to be completely soft yet because it will continue cooking with the vegetables.
Beef gives this version a hearty main-course character, but meat is not required for borscht. Ukrainian borscht exists in many forms, including meatless versions, mushroom versions, bean-based recipes, and preparations made with fermented beet liquid. This recipe uses beef because it creates a rich broth and makes the soup substantial enough to serve as dinner.
🥕 Prepare the Vegetables
While the beef simmers, peel the beets and grate them using the large holes of a box grater or cut them into thin matchsticks. Grate or thinly slice the carrots, dice the onion, peel and cube the potatoes into roughly 3/4-inch pieces, and shred the cabbage fairly thinly so it becomes tender without needing a long cooking time.
Beets stain easily, so a plastic cutting board or a sheet of parchment over the work surface can be useful. Kitchen gloves are optional, but they can save your hands from turning pink. The color usually washes away from skin fairly quickly, although porous cutting boards can hold the stain longer.
🧅 Cook the Onion, Carrots, and Tomato Paste
Heat the oil in a large skillet over medium heat. Add the onion and carrots and cook for about 5 to 7 minutes, stirring occasionally, until they begin to soften. You do not need deep browning here. The goal is to mellow the onion and bring out some sweetness from the carrots.
Stir in the tomato paste and cook for another 1 to 2 minutes. The paste should darken slightly and begin to smell richer and sweeter. Cooking tomato paste briefly in fat helps remove some of its raw metallic edge and gives the finished broth more depth.
❤️ Cook the Beets Separately
Add the grated beets to the skillet and cook for about 5 minutes, stirring frequently. Add 1 tablespoon vinegar and a ladleful of the hot broth from the soup pot, then cover and simmer gently for another 5 to 10 minutes.
Cooking the beets separately for part of the process gives you more control over both their texture and the balance of the soup. The acidity sharpens the earthy flavor and helps the finished borscht stay brighter. It is not a magic trick that guarantees one exact shade of red, because beet pigments still respond to heat and cooking time, but the vinegar contributes both flavor and color stability.
🥔 Add the Potatoes and Cabbage
Once the beef has simmered for about an hour, add the potatoes to the soup pot and cook for approximately 10 minutes. The potatoes need a small head start before the cabbage and beet mixture go in.
Add the shredded cabbage and simmer for another 5 minutes. Thinly sliced cabbage softens relatively quickly, so there is no need to boil it for half an hour unless you prefer a very soft texture.
Scrape the cooked beet, carrot, onion, and tomato mixture into the pot and stir gently. Simmer for another 10 to 15 minutes, until the potatoes are tender and the beef is soft. Keep the soup at a gentle simmer rather than a hard rolling boil.
🧄 Finish with Garlic, Vinegar, and Dill
Stir in the minced garlic and cook for about 2 minutes. Adding garlic near the end keeps its flavor fresher and more noticeable than it would be if it simmered for an hour.
Add another tablespoon of vinegar, then taste the broth. If it needs more brightness, add the remaining vinegar or a little lemon juice. If the beets are especially earthy or the soup tastes sharper than you prefer, stir in the optional teaspoon of sugar. The sugar should not make the soup taste sweet. It is simply there to balance the acidity.
Turn off the heat and stir in the fresh dill and optional parsley. Add plenty of freshly ground black pepper, taste once more for salt, and remove the bay leaves.
⏰ Let the Borscht Rest
If you have time, let the soup stand for 20 to 30 minutes before serving. Even better, make it the day before and refrigerate it overnight. Borscht is one of those soups that often tastes more unified after several hours because the vegetables, broth, garlic, vinegar, and herbs have time to meld.
When ready to serve, ladle the soup into bowls and add a spoonful of sour cream and more fresh dill. Rye bread or another sturdy bread is a natural accompaniment and makes the soup feel like a complete meal.
🇺🇦 Borscht and Ukrainian Food Culture
Borscht is deeply connected with Ukrainian food culture and family life. In 2022, UNESCO inscribed the Culture of Ukrainian Borscht Cooking on its List of Intangible Cultural Heritage in Need of Urgent Safeguarding. UNESCO describes Ukrainian borscht not as one standardized recipe but as a living tradition that includes different ingredients, methods, occasions, and family practices.
That diversity is important. Some Ukrainian borscht recipes use beef or pork, while others are meatless. Some include beans, mushrooms, or fermented beet liquid. Potatoes and cabbage are common in many versions, but they are not the only way to make the soup. What matters more than one fixed ingredient list is the broader tradition of preparing, serving, and sharing borscht.
Borscht and related sour or beet-based soups also appear elsewhere in Eastern and Central Europe. Polish barszcz has its own traditions, and Lithuania and neighboring countries have other beet soups and cold beet preparations. It makes sense to talk about borscht as part of a broader regional family of dishes while also recognizing the particularly deep cultural significance of Ukrainian borscht.
🥩 Choosing the Meat
Beef chuck works especially well because it becomes tender during a long simmer while giving the broth plenty of flavor. Beef shank, short ribs, soup bones, or marrow bones can also be added for a deeper broth. If using bones, simmer them with the meat and remove them before serving.
Pork can also be used. Pork shoulder or ribs create a rich broth, and smoked pork appears in some versions. The finished soup will have a slightly different character, but it still fits naturally into the broader tradition.
If you prefer a meatless borscht, replace the beef broth with a flavorful vegetable broth. White beans can make the soup more substantial, while mushrooms add savory depth. Dried porcini are especially useful because both the mushrooms and their strained soaking liquid contribute a deep earthy flavor.
🥔 Choosing the Vegetables
Yukon Gold or other waxy potatoes work especially well because they become creamy without dissolving too quickly. Russets can be used, but they tend to break down more easily, so cut them slightly larger and stir gently once they are tender.
Four cups of shredded cabbage gives the soup plenty of body without overwhelming the beets. If you prefer a cabbage-heavy borscht, increase the amount and add a little extra broth as needed. The cabbage should soften but can still retain a little texture.
Grated beets cook quickly and distribute their color and flavor throughout the soup. Matchstick or diced beets produce a chunkier texture. Both approaches work. Roasting the beets first is another option and creates a sweeter, deeper beet flavor, but it adds more time to the recipe.
Some borscht recipes include apple, prunes, or other ingredients that add sweetness and acidity. These are optional rather than essential. If you want to experiment, a tart apple or a small handful of finely chopped prunes can add another layer of flavor without changing the basic character of the soup.
🌿 Seasoning the Soup
Fresh dill is one of the most valuable finishing ingredients in this style of borscht. Dried dill can work in the broth, but fresh dill added at the end gives the soup a much brighter aroma. Add some after turning off the heat and another pinch to individual bowls.
Caraway appears in some Eastern European soups but is not necessary here. If you enjoy its flavor, add a small pinch. Otherwise, garlic, dill, black pepper, tomato, and beets provide plenty of complexity.
Sour cream is the classic accompaniment for this style of borscht. Plain full-fat yogurt can substitute if necessary. Add dairy to individual bowls rather than stirring it into the entire pot, which makes the soup easier to store and freeze.
❤️ Troubleshooting Borscht
If the soup turns brown rather than bright red, the beets may have cooked too long or boiled too aggressively. A little acidity and gentler cooking help preserve more color, but the soup can still taste excellent even if it becomes darker than expected.
If the borscht tastes flat, it usually needs salt, acid, or fresh herbs. Add salt gradually, then try a small splash of vinegar or lemon juice. Fresh dill and black pepper can make a dramatic difference at the end.
If the soup tastes too sweet, add more vinegar or lemon juice. Beets and carrots naturally contribute plenty of sweetness, so there is often no need for added sugar at all. If it becomes too sour, dilute it slightly with broth and add only a tiny pinch of sugar if necessary.
Season the broth lightly near the beginning, then make the final salt adjustment once the soup has finished simmering. Broth reduces as it cooks, and ingredients such as sour cream or bread can add additional salt at the table.
🍞 What to Serve with Borscht
Rye bread is probably the most natural companion, although sourdough, garlic bread rolls, or another sturdy loaf will work beautifully. Because this version contains beef, potatoes, cabbage, carrots, and beets, it is already substantial enough to function as a complete meal.
If you enjoy cabbage-based soups, Hearty European-Style Vegetarian Cabbage Soup shares some of the same vegetables while remaining clearly distinct and meatless.
For a smoother, sweeter cold-weather soup, Creamy Pumpkin and Carrot Soup provides a completely different texture and flavor profile. Borscht stays chunky and tangy, while pumpkin soup is creamy and gently sweet.
For more cold-weather options, The Top 10 Best Soups for Winter can help round out a seasonal soup rotation.
❄️ Make-Ahead, Storage & Freezing
Borscht is one of the best soups to make ahead. Cook it completely, cool it promptly, and refrigerate overnight. Reheat it gently the following day and add a little fresh dill before serving. The vegetables absorb more of the broth’s flavor as the soup rests.
Store leftovers in shallow airtight containers in the refrigerator and use them within 3 to 4 days. Keep the sour cream separate and add it only when serving.
Borscht also freezes well. Cool it completely and transfer it to freezer-safe containers, leaving room for expansion. For best quality, use it within about 3 months. The potatoes may become slightly softer after freezing and thawing, but the overall flavor holds up very well.
Reheat refrigerated or thawed borscht in a saucepan over medium heat until hot throughout. If the soup has thickened, add a little broth or water. Taste again after reheating because chilling can mute salt and acidity.
🍲 A Soup That Rewards Patience
Borscht is not difficult, but it benefits from building flavors in stages. Let the beef simmer until tender, soften the onions and carrots separately, give the tomato paste time to cook, and let the beets develop with a little acidity before they enter the broth. Add the cabbage late enough that it keeps some texture, then finish everything with garlic, vinegar, fresh dill, and black pepper.
The finished soup should not taste simply like boiled beets. It should be savory, earthy, fresh, tangy, and gently sweet, with tender meat and vegetables in every bowl.
Serve it with sour cream and rye bread, then save the rest for tomorrow.
The second bowl may be even better than the first.
🔗 Related Articles
- Hearty European-Style Vegetarian Cabbage Soup
- Creamy Pumpkin and Carrot Soup
- The Top 10 Best Soups for Winter
