This is how I like to make borscht for my family. It is very thick and satisfying on a cold winter night. Many people who are scared of beets enjoy my borscht because it has so many other flavors. For best flavor, top each bowl of borscht with a tablespoon of sour cream.
Combine soup bones and water in a large pot; bring the water to a boil, reduce heat to medium-low, and cook at a simmer for 4 hours.
Remove soup bones and meat from pot; set aside until cool enough to handle. Skim fat from the surface of the broth. Add potatoes, carrots, celery, beets, onion, garlic, salt, paprika, and ground black pepper to the broth. Bring broth again to a boil, reduce heat to medium-low, and simmer until the vegetables are tender, about 1 hour more.
Pick meat off soup bones and add back to soup. Discard bones and fat. Stir cabbage, diced tomatoes, and tomato paste into the soup. Continue cooking at a simmer until the cabbage is tender, about 15 minutes.