Remove and reserve the beets’ stems and leaves. Wash the beets, stems, and leaves well.
In a 4-quart saucepan, combine the beets, onion, sugar, vinegar, caraway, and 1 tsp. salt. Add 7 cups water, cover, and bring to a boil over high heat. Lower the heat to medium and cook, covered, until the beets are tender when pierced with a paring knife, 45 minutes to 1-1/4 hours.
Meanwhile, coarsely chop the stems and leaves. Remove the beets with a slotted spoon and transfer to a bowl to cool slightly. Add the stems, leaves, and the garlic to the saucepan and cook, covered, until the stems and garlic are tender, about 10 minutes.
Peel the beets, quarter them, and return them to the pot.
In a blender, purée about one-third of the beet mixture, including the liquid, until very smooth, about 2 minutes.
Set a medium-mesh strainer over a large bowl and force the purée through it with a silicone spatula. Repeat with the rest of the soup in 2 more batches. Season to taste with salt, pepper, and vinegar. Cover and refrigerate until cold, at least 4 hours.
Heat the olive oil in a 10-inch skillet over medium heat until shimmering hot. Add the bread and cook, stirring and turning with a slotted spoon, until golden, 1 to 2 minutes. Transfer the croutons to paper towels to drain.
Just before serving, season the soup to taste with salt, pepper, and vinegar. Serve garnished with the croutons, sour cream, and dill.
The finished soup can be refrigerated, covered, for up to 2 days. Adjust the seasoning and garnish just before serving.
The croutons can be made 1 day ahead, cooled, and stored in a zip-top bag.