Preheat the oven to 425 degrees F (220 degrees C).
Trim and wash beets. Set leaves aside and discard stems. Wrap beets in foil packages (3 per package) and place in a deep baking dish.
Roast in the preheated oven until tender, about 45 minutes.
Remove from the oven. Divide onions, herbes de Provence, 1/2 of the olive oil, salt, and pepper between the packages. Reseal and roast for another 45 minutes.
Remove from the oven. Drizzle 1/2 of the balsamic vinegar into each package. Reseal and roast for 5 more minutes.
Meanwhile, melt butter and remaining olive oil in a pan over medium heat. Add garlic and cook until fragrant, about 1 minute. Throw in spinach and reserved beet leaves. Cook, stirring often, until wilted, about 5 minutes.
Remove beets from the oven. Transfer beets, onions, and all drippings to a serving dish. Stir in wilted greens and season to taste.