Add water, pork ribs, onion, carrot, celery, bay leaves, peppercorns, and salt to a large Dutch oven. Bring to a gentle simmer and cook for 90 minutes until the broth smells rich and the meat is tender.
Skim foam from the top while the broth cooks to keep it clear. Remove the meat, strain the broth, and shred the meat into bite-sized pieces.
Peel and prep the vegetables while the broth simmers. Keep the potatoes in cold water so they stay bright and do not brown.
Heat olive oil in a skillet over medium heat. Cook the chopped onion for 5 minutes until soft and lightly golden.
Add grated carrots and cook for 3 minutes, stirring often. Stir in the grated beets and cook another 5 minutes until slightly softened.
Mix tomato paste and lemon juice into the vegetable mixture. The beets should turn a deeper red color almost immediately.
Return the strained broth to the pot and add potatoes first. Simmer for 10 minutes until they begin to soften.
Add cabbage, shredded meat, and the beet mixture to the soup. Simmer gently for 10–15 minutes until the potatoes are fork tender and the broth looks bright red.
Stir in garlic, dill, parsley, salt, and black pepper right before serving. Serve hot with sour cream on top.