Heat the oil in a large soup pot set over medium-high heat. Once the oil is hot, add the beef and cook until all the pieces are brown.
Add the whole celery, carrot, onion, garlic, bay leaves, coriander powder, salt, and pepper, and fill the pot with enough water to cover everything with about 1-2 inches of water.
Increase the heat to high and bring it to a boil before immediately reducing the heat to medium-low. For the first 15-20 minutes, periodically skim off any scum settling on the surface of the broth. Stir as needed.
Continue to simmer for 1½-2 hours or until the beef is tender and the broth has reduced by ⅓.
About 30 minutes before the soup is ready, melt the butter in a large skillet set over medium heat. Stir in the onion and cook until translucent. Add the shredded beets and carrots and cook them down for 10 minutes or until they are soft and the carrots have turned red.
Next, add the tomato sauce, tomato paste, vinegar, salt, and black pepper. Mix well to combine. Cook it down for another 5 minutes then remove the pan from the heat and set aside.
Once the beef is tender, remove all the vegetables and the bay leaves, stir in the potatoes, and continue to simmer for approximately 15 minutes.
Carefully stir the beet mixture and cabbage into the pot and cook for 2-3 minutes until the cabbage has softened. At the very end, just before serving, stir in the dill.
Serve with sour cream, bread, fresh bread, and fresh dill if desired.