Hearty Ukrainian Borscht
A ruby-red beetroot soup with cabbage, potato and beans, topped with sour cream and dill.

The order of the cooking matters more than the ingredient list. Beets need time to soften and sweeten, so they go in early, and the cabbage goes in late so it keeps some bite. Traditional versions simmer in beef broth, but a good vegetable stock with a little tomato paste and a bay leaf gives plenty of depth.
Serve it with a generous spoon of sour cream and a shower of fresh dill, plus dark rye bread for dunking. Vegetarians and vegans can use a cashew or oat cream instead, and it is just as good.
Ingredients
- 2 tbsp olive oil or butter
- 1 large onion, chopped
- 2 carrots, coarsely grated
- 2 celery sticks, finely chopped
- 3 medium beetroot (about 500 g), peeled and coarsely grated
- 2 tbsp tomato paste
- 2 potatoes, peeled and cut into 2 cm cubes
- 1.5 litres vegetable stock
- 1 bay leaf
- 1 tsp caraway seeds, lightly crushed (optional)
- 250 g white cabbage, finely shredded
- 1 can (400 g) cannellini beans, drained
- 1 tbsp red wine vinegar or lemon juice, plus more to taste
- 1 tsp fine salt, plus more to taste
- 1/2 tsp black pepper
- Sour cream or cashew cream, to serve
- A large handful of fresh dill, chopped
- Dark rye or sourdough bread, to serve
Instructions
- Heat the oil or butter in a large pot over medium heat and cook the onion, carrot and celery for 8-10 minutes until softened and beginning to colour.
- Add the grated beetroot and cook for 5 minutes, stirring, then stir in the tomato paste and cook 1 minute more.
- Add the potatoes, stock, bay leaf and caraway seeds. Bring to a boil, then lower the heat and simmer for 20 minutes.
- Stir in the shredded cabbage and cook for a further 10 minutes, until the cabbage is tender but still has a little bite.
- Add the beans, vinegar or lemon juice, 1 tsp salt and the pepper and simmer for 5 minutes.
- Taste carefully and adjust. The soup usually wants another teaspoon of vinegar to sharpen it and more salt to bring the beets forward — bland borscht is nearly always under-seasoned.
- Remove the bay leaf and let the soup sit off the heat for 10 minutes. This is what gives it the deep, rounded flavour.
- Ladle into bowls and top each with a spoonful of sour cream or cashew cream swirled through and a generous pinch of fresh dill.
- Serve with dark rye or sourdough bread.
Cook’s tips
- Salt and acid are what make borscht taste like borscht. Taste at the end and add vinegar a teaspoon at a time.
- Grate the beetroot rather than dicing it so it melts into the broth.
- A piece of raw beet or a squeeze of lemon stirred in at the end restores the colour if it looks dull.
- Borscht genuinely improves overnight — make it a day ahead if you can.
- Use a vegetarian stock and vegetarian sour cream (or cashew cream) to keep the soup meat-free.
Substitutions
- Red cabbage works in place of white and deepens the colour.
- Kidney beans or butter beans can replace the cannellini.
- For a vegan topping, blend soaked cashews with lemon juice, salt and water, or use a spoon of oat creme fraiche.
- Add sliced vegetarian sausage or a spoon of smoked paprika for a smokier, heartier bowl.
Storage & reheating
Refrigerate for up to 5 days — it gets better each day. Freeze without the cream topping for up to 3 months. Reheat gently and add the sour cream and dill to each bowl after reheating.
FAQ
Is borscht always made with meat?
No. While beef broth is common in traditional versions, vegetable stock with tomato paste and bay leaf makes a fully vegetarian borscht that is just as deep in flavour.
Why does my borscht lose its red colour?
Beetroot pigments dull with long cooking and without acid. Add a tablespoon of vinegar or lemon juice and stir in a little extra raw grated beetroot at the end to bring the colour back.
What do you serve with borscht?
Sour cream or a plant-based cream, plenty of fresh dill, and dark rye bread. Many people also like a boiled potato or a spoon of crushed garlic on the side.



