Preheat the oven to 400 degrees F. Put the shallots in a small baking dish, toss with 1 tablespoon canola oil and the sugar and season with salt and pepper. Roast, turning a few times, until golden brown and caramelized, 40 to 45 minutes. Let cool slightly, then thinly slice.
Put the bacon in a large saute pan over medium heat and cook, stirring occasionally, until the fat has rendered and the bacon is golden brown and crisp, about 10 minutes. Remove with a slotted spoon to a plate lined with paper towels.
Pour off all but 1 tablespoon of the bacon fat, then add the remaining 2 tablespoons canola oil to the pan. Return to the stove over medium heat and heat until the oil begins to shimmer. Add the cabbage and Brussels sprouts, season with salt, pepper and the red pepper flakes, and cook until the vegetables are soft and light golden brown, about 15 minutes. Stir in the vinegar and the shallots. Transfer to a platter and top with the crisp bacon.