Cut beet greens into thin strips, and stems into 1/4-inch pieces; set both aside. Peel beets with a vegetable peeler; cut into 1/4-inch-thick matchsticks. Set aside.
Heat oil in a large saucepan over medium heat until hot but not smoking. Add onion; cook, stirring occasionally, until softened and just browned, about 7 minutes. Add garlic; cook until fragrant, about 1 minute. Add cumin, coriander, cayenne, and pepper; cook, stirring, until fragrant, about 1 minute.
Add tomatoes and salt; cook, scraping up any browned bits from the bottom of the pan, until juices are released, about 2 minutes. Add stock and 4 1/2 cups water (for a thinner consistency, add up to 5 cups water); bring to a boil. Add beets and stems. Reduce heat; simmer until beets are tender, about 35 minutes.
Add greens; cook until just tender, about 5 minutes. Divide soup among six bowls; divide yogurt among servings.