In a large pot, heat some oil over medium heat. Add the onion and carrot, and sauté until softened, about 5 minutes.
Add the grated beets and cook for another 5 minutes, stirring occasionally.
Stir in the tomato paste and vinegar, and cook for a couple of minutes.
Add the broth, potatoes, cabbage, garlic, and bay leaf. Bring to a boil, then reduce heat and simmer for about 30 minutes, or until the vegetables are tender.
Season with salt and pepper to taste.
Serve hot, garnished with fresh dill and a dollop of sour cream.
Additional notes
If you prefer a meatier version, you can add beef chunks or short ribs to the pot at the beginning and let them simmer until tender before adding the vegetables.
For a vegetarian or vegan version, use vegetable broth and skip the sour cream or use a vegan alternative.
Adding a bit of sugar can balance the acidity of the beets and tomatoes. Also, a splash of lemon juice at the end can brighten the flavors.
Borscht is traditionally served with rye bread or pampushky (Ukrainian garlic bread).