Borscht on meaty bones is a deep ruby red, richly flavoured traditional beet soup made from slow-cooked beef bone stock, loaded with shredded meat, cabbage, potatoes, and beetroot - hearty, filling, and deeply nourishing.

This is proper homemade borscht, the kind that takes a bit of time but rewards you fully. The stock is made from scratch using meaty bones - marrow bones, short ribs, osso buco, whatever you can get - simmered low and slow for hours until the broth turns rich, golden, and deeply beefy. That broth is the foundation of everything here. You won't get this flavour from a stock cube, and once you taste the difference, you won't want to go back.
What makes this recipe worth making is that nothing is wasted. The bones give you the stock, the meat gets shredded and goes straight back into the soup, and every vegetable you add builds on that already flavourful base. The beetroot gives it that vibrant crimson colour and a sweet, earthy tang. The cabbage and potatoes make it thick and satisfying. A spoonful of sour cream on top and a few slices of garlic on the side, and you've got a bowl of proper comfort food.
And yes - borscht is always better the next day. Make it ahead, let it rest overnight, and you'll see exactly what I mean.
Jump to:
What Ingredients to Use for Borscht
Here's what you need to make this borscht recipe with meaty bones stock:
For the Stock:
- Meaty bones (marrow bones, osso buco, soup bones, or short ribs) - these give the stock its body, depth of flavour, and the melt-in-your-mouth shredded beef that goes back into the soup.
- Beef for slow cooking - extra beef added alongside the bones makes the stock even richer and gives you more meat to shred.
- Carrots - added to the stock for natural sweetness and a rounded, wholesome base flavour.
- Onion - essential for depth; it quietly builds the savoury backbone of the broth.
- Celery stalks - adds a mild, slightly earthy note that rounds out the stock beautifully.
- Red bell pepper - gives the stock a gentle sweetness and a subtle colour.
- Black peppercorns - for a warm, gentle heat that infuses through the long simmer.
- Bay leaves - classic aromatic that adds that familiar, comforting depth to any slow-cooked broth.
For the Borscht:
- Pre-cooked vacuum-packed beetroot - practical, consistent, and works perfectly here; it grates easily and gives the soup its bold ruby colour and tangy beetroot flavour without the faff of roasting or boiling raw beets.
- Carrots - grated and sautéed, they add sweetness and body to the vegetable base.
- Onion - sautéed until golden, it forms the flavourful base of the borscht along with the carrots.
- Green or white cabbage - finely shredded, it adds texture and bulk, making the soup properly thick and satisfying.
- Waxy potatoes - diced small, they cook evenly and hold their shape, making the soup filling and hearty.
- Tomato paste or purée - deepens the colour and adds a rich, slightly acidic base that balances the beetroot.
- White distilled vinegar or lemon juice - that touch of acidity is what gives borscht its characteristic sweet and sour balance; it also helps the beetroot keep its vivid crimson colour.
- Butter or vegetable oil - for sautéing the vegetables; butter adds a lovely richness, but oil works just as well.
- Salt, ground black pepper, and ground paprika - simple seasoning that brings everything together.
- Shredded meat from the stock - goes back into the soup for silky, flavour-packed pieces of beef in every bowl.
- Stock - the whole point of making it from scratch; rich, flavourful bone broth that carries the entire soup.

How to Make Borscht From Scratch - Step by Step
Step 1: Make the Stock
Place the meaty bones and beef into a large pot and cover with cold water. Bring to the boil over high heat, then immediately reduce to a gentle simmer. Skim the foam from the surface regularly - this is important for a clear, clean-tasting stock. Do not cover the pot with a lid, and do not add salt at this stage. Let it simmer steadily for 2–3 hours.
Step 2: Strain and Shred
Once the stock is ready, remove the meat and bones from the pot. Pull the cooked beef off the bones and shred it into rough pieces - set it aside. Strain the stock through a fine sieve into a clean soup pot, discarding the cooked vegetables and bones. Return the pot to the stove, add the shredded meat, and season with a generous pinch of salt. Bring it back to the boil.
Step 3: Prepare the Vegetables
While the stock is heating, melt the butter (or heat the oil) in a large skillet over medium heat. Finely slice the onion and grate the carrots, then add them to the pan with a pinch of salt, paprika, and ground black pepper. Sauté for a few minutes until golden and softened. Grate the pre-cooked beetroot and add it to the skillet along with the tomato paste and vinegar (or lemon juice). Stir everything together and let it simmer for about 10 minutes. Meanwhile, peel and dice the potatoes into small cubes, and finely shred the cabbage.
Step 4: Build the Borscht
Add the diced potatoes to the boiling stock and reduce the heat to medium. After a few minutes, add all the sautéed vegetables - the onion and carrot mixture, the beetroot and tomato mixture, and the shredded cabbage. Simmer everything together for another 10 minutes. Check the potatoes for tenderness, taste and adjust the salt, and add a splash more vinegar if you want a sharper flavour. Turn off the heat, cover with a lid, and leave the borscht to rest for at least 15–20 minutes before serving. This resting time makes a real difference.
How to Serve and How to Store Borscht
Ladle the borscht into deep bowls and finish with a generous spoonful of sour cream. Add fresh dill or parsley, a few slices of raw garlic, and sliced spring onions. For a traditional Russian touch, serve with rye bread and salo (pork lard), or alongside warm baked buns - exactly as you see in these photos. The combination of the hot, tangy soup and that cool, creamy sour cream is what makes it so good.
Borscht keeps brilliantly in the fridge for up to 4–5 days, and it genuinely tastes better the next day once all the flavours have had time to settle and deepen. Store it in an airtight container and reheat gently on the hob over low heat. You can also freeze borscht - it freezes well for up to 3 months. Just leave out the sour cream until serving. If you're reheating from frozen, thaw overnight in the fridge first, then warm it slowly.

More Soups You Might Like
If you enjoy this kind of hearty, from-scratch soup cooking, here are a few more recipes on the blog that are worth trying:
- Chicken Borscht Recipe - a lighter version using chicken instead of beef, just as flavourful and much quicker to make.
- Cold Borscht - Lithuanian Beetroot Soup (Šaltibarščiai) - a completely different dish, cold and creamy, perfect for warm weather.
- Shchi Soup Recipe - Russian Sauerkraut Soup - another classic Russian cabbage soup, tangy and deeply satisfying.
- Authentic Russian Soljanka Recipe - a hearty meat and pickle soup that's bold, smoky, and unlike anything else.
- Russian Chicken Soup Recipe - simple, nourishing, and the kind of soup you want when you need something comforting.
- Cod Ukha Recipe - Classic Russian Fish Soup - a delicate, clear fish broth that's completely different but equally worth making.
Top Tips and Notes for the Best Borscht on Meaty Bones
- 1. Choose the right bones. The bones you use will define the quality of your stock, so this step genuinely matters. Marrow bones give you a rich, gelatinous broth with deep body. Short ribs are brilliant because they have plenty of meat on them, which means you get a great stock and loads of shredded beef to go back into the soup. Osso buco (cross-cut veal or beef shank) is another excellent option. If you can, use a combination of different bone types - marrow for richness, meatier bones for flavour and yield. Ask your butcher what they have; often the best soup bones aren't even labelled on the shelf.
- Don't skip the foam-skimming. When the stock first comes to the boil, a grey-brown foam will rise to the surface - this is coagulated protein from the bones and meat. It won't make you ill, but it will make your stock cloudy and give it a slightly bitter, muddy taste if you leave it. Skim it off with a ladle or a large spoon, and keep checking every 10–15 minutes during the first half hour of simmering. Once the foam stops appearing, you can relax and let it simmer undisturbed. A clear, clean stock makes a noticeably better borscht.
- The acid is non-negotiable. Whether you use white distilled vinegar or fresh lemon juice, the acid does two important things in this recipe. First, it balances the natural sweetness of the beetroot and the richness of the beef stock, creating that classic sweet and sour flavour that borscht is known for. Second, it acts as a colour fixative - the acid interacts with the pigments in the beetroot and helps the soup hold its vivid crimson colour rather than turning a duller brownish-red. Add the vinegar to the beetroot in the skillet, not directly to the pot, for the best result.
- Sauté the vegetables properly. It might be tempting to throw everything raw into the pot and call it done, but taking the time to sauté the onion, carrot, and beetroot in butter or oil first makes a significant difference to the final flavour. The butter adds richness, and the gentle cooking caramelises the natural sugars in the vegetables, giving them a softer, sweeter flavour that blends into the broth rather than tasting sharp and raw. Butter specifically adds a silkiness to the vegetable mixture that oil doesn't quite replicate, though oil works perfectly well if that's what you have.
- Let the borscht rest before serving. This is one of the most important steps and one of the most frequently skipped. After you turn off the heat, cover the pot with a lid and leave it for at least 15–20 minutes before ladling it into bowls. During this time, the flavours continue to develop and meld together. The vegetables relax into the broth, the acidity softens slightly, and the overall taste becomes more rounded and harmonious. This is also why borscht tastes so much better the next day - the overnight rest in the fridge allows the flavours to fully mature and deepen.
- Shred the meat, don't chop it. Once you pull the beef off the bones, use two forks to shred it into long, rough strands rather than cutting it into chunks. Shredded meat has far more surface area, which means it absorbs more of the surrounding broth and becomes incredibly tender and flavourful. It also distributes through the soup much more naturally, so you get a bit of silky beef in every spoonful rather than large chewy chunks that sink to the bottom. The slow cooking process should have made the meat tender enough to shred very easily - if it's still tough, it simply needs more time in the stock.
- Borscht is genuinely better the next day - cook it ahead. If you're making this for a dinner party or a family meal, make it the day before. This is one of those soups that improves greatly with time. As it sits in the fridge, the stock becomes more gelatinous, the beetroot flavour deepens, and the sweet and sour balance settles into something far more complex than it was on day one. Reheat it slowly on the hob over low heat, taste and adjust the seasoning - sometimes it needs a tiny bit more salt or a splash of vinegar after resting overnight - and serve with fresh sour cream and herbs.

Frequently Asked Questions
What bones are best for borscht stock?
The best bones for borscht stock are ones that have both marrow and meat on them. Marrow bones add body and a rich, gelatinous quality to the broth. Short ribs are excellent because they give you a deeply flavoured stock and plenty of meat to shred and return to the soup. Osso buco (beef or veal shank) and other soup bones with meat on them also work brilliantly. If you can, use a mix — marrow for richness, short ribs or beef chuck for flavour and texture. Avoid bones that are completely bare of meat, as they'll give you a thinner stock with less depth.
Can I make borscht without making stock from scratch?
You can, but the flavour won't be the same. Ready-made beef stock or stock cubes will give you a shortcut, but they lack the depth, body, and natural richness that comes from simmering actual meaty bones for hours. The bone broth is really the heart of this recipe — it's what makes this borscht taste so nourishing and full. If you do need a shortcut, use a good-quality fresh stock from the chilled section of the supermarket rather than a cube, and add as much beef as you can to compensate. But if you have the time, make it from scratch. It's worth it.
How long does borscht keep in the fridge?
Borscht keeps well in the fridge for 4–5 days stored in a sealed container. The flavour actually improves over the first couple of days, so don't worry about making a big batch. Make sure the soup has cooled completely before putting it in the fridge — don't leave it at room temperature for more than 2 hours. When reheating, warm it gently over low heat on the hob. Avoid boiling it hard when reheating, as this can cause the beetroot colour to fade and the potatoes to become mushy.
Can I freeze borscht?
Yes, borscht freezes well for up to 3 months. Let it cool completely, then portion it into airtight freezer containers or zip-lock bags. Leave a little space at the top for expansion. Thaw overnight in the fridge before reheating. One thing to note: the texture of the potatoes may change slightly after freezing and thawing — they can become slightly softer or grainy. If that bothers you, you can make the borscht without the potatoes, freeze it, and add freshly cooked potatoes when you reheat. Always add fresh sour cream at serving — don't freeze sour cream in the soup.
Do I need to add garlic to the borscht during cooking?
Traditionally, garlic is added raw at serving rather than cooked into the soup. Sliced or crushed raw garlic served alongside the borscht — or stirred into the bowl just before eating — gives a sharp, pungent hit that contrasts beautifully with the rich, slightly sweet broth. If you prefer a milder garlic flavour, you can add a clove or two to the stock while it simmers and remove them before serving. But for authentic flavour, serve the raw garlic on the side and let each person add as much or as little as they like.
Borscht on Meaty Bones — Traditional Beef Borscht Recipe From Scratch

Borscht on meaty bones is a traditional beet soup made with slow-cooked beef bone stock, shredded beef, beetroot, cabbage, and potatoes. It's thick, hearty, and deeply flavourful — the kind of recipe that takes a bit of time but fills the whole kitchen with the most incredible smell while it cooks. Always better the next day.
Ingredients
Ingredients for the Stock:
- Meaty bones (marrow bones, osso buco, soup bones, or short ribs) — 400 g (14 oz)
- Beef for slow cooking — 400 g (14 oz)
- Carrots — 2 medium
- Onion — 1 large
- Celery stalks — 2–3 stalks
- Red bell pepper — 1
- Black peppercorns — 7–8
- Bay leaves — 2–3
Ingredients for Borscht
- Pre-cooked vacuum-packed beetroot — 1 pack (typically 250–300 g / 9–10½ oz)
- Carrots — 2 medium
- Onion — 1 medium
- Green or white cabbage — ¼ medium head or ½ small head
- Waxy potatoes — 4–5 medium
- Tomato paste or purée — 2 tbsp
- White distilled vinegar or juice of 1 lemon — 2 tbsp
- Butter or vegetable oil — a knob of butter or 2–3 tablespoon oil
- Salt and ground black pepper — pinch of each
- Ground paprika — pinch
- Shredded meat from the stock
- Stock (all of it)
Instructions
- Make the stock. Place the meaty bones, beef, carrots, onion, celery, red bell pepper, peppercorns, and bay leaves into a large pot. Cover everything with cold water. Bring to the boil over high heat, then immediately reduce to a low simmer. Skim the foam from the surface regularly during the first 30 minutes. Do not cover the pot and do not add salt. Simmer for 2–3 hours.
- Strain and shred. Remove the meat and bones from the pot. Pull the beef off the bones and shred it into rough pieces using two forks. Set the shredded meat aside. Strain the stock through a fine sieve into a clean, large soup pot, discarding the cooked vegetables and bones. Return the pot to the stove and bring the strained stock back to the boil. Add the shredded meat and season with a generous pinch of salt.
- Prepare the vegetables. Melt the butter (or heat the oil) in a large skillet over medium heat. Finely slice the onion and grate the carrots. Add them to the skillet with a pinch of salt, paprika, and ground black pepper. Sauté for 4–5 minutes, stirring occasionally, until softened and golden. Grate the pre-cooked beetroot and add it to the skillet. Add the tomato paste and vinegar (or lemon juice). Stir well and let everything simmer together for 10 minutes. Meanwhile, peel and dice the potatoes into small, even cubes (about 1–1.5 cm). Finely shred the cabbage.
- Build and finish the borscht. Add the diced potatoes to the boiling stock and reduce the heat to medium. After 3–4 minutes, add all the sautéed vegetables — the onion and carrot mixture, the beetroot and tomato mixture, and the shredded cabbage. Stir everything together and simmer for a further 10 minutes. Check the potatoes — they should be completely tender when pierced with a fork. Taste and adjust the salt. Add a little more vinegar if you want a sharper, tangier flavour. Turn off the heat, cover the pot with a lid, and leave the borscht to rest for at least 15–20 minutes before serving. Serve with sour cream, fresh herbs, sliced garlic, and baked buns or rye bread.






[…] which deepens the flavour without adding too much acidity. Another key difference is the base—borscht relies on a rich vegetable or bone stock, whereas this beetroot soup is designed to be quick and […]