Wash and dice the onion into small pieces. Peel and slice carrots into thin rounds. Slice celery into similar-sized pieces. Mince the garlic finely. Core the cabbage, chop into bite-sized pieces, and set aside.
Heat olive oil in a large stockpot or Dutch oven over medium heat. Add onion, carrots, and celery. Cook, stirring occasionally, for 5-7 minutes until onion is soft and translucent. Add garlic and cook 30 seconds until fragrant.
Add the chopped cabbage to the pot in batches if needed. Stir well to coat with oil and aromatics. Sprinkle in thyme, oregano, smoked paprika, and bay leaves. Cook for 3-4 minutes, stirring occasionally, until cabbage begins to soften.
Pour in the diced tomatoes with their juices and add the broth. If using ground beef or sausage, stir it in now. Bring to a gentle boil over high heat.
Reduce heat to low, cover partially, and simmer for 25-30 minutes, stirring occasionally, until cabbage and carrots are fork-tender. Adjust seasoning partway through if needed.
Remove and discard bay leaves. Stir in apple cider vinegar and season generously with salt and pepper. If desired, use an immersion blender to pulse briefly for a slightly thicker texture.
Ladle into bowls, top with chopped fresh parsley, and serve hot with crusty bread on the side.