In a large skillet, cook the bacon over medium heat until crispy. Remove the bacon from the skillet and set aside on a paper towel-lined plate.
In the same skillet with the bacon grease, add the diced onion and minced garlic. Cook until softened, about 3-4 minutes.
Add the Brussels sprouts to the skillet and season with salt, pepper, and red pepper flakes. Cook, stirring occasionally, until the Brussels sprouts are tender and lightly browned, about 10-12 minutes.
Drizzle the balsamic vinegar over the Brussels sprouts and stir to coat. Cook for an additional 2-3 minutes.
Remove the skillet from heat and sprinkle the cooked bacon and shredded Parmesan cheese (if using) over the top.
Garnish with chopped fresh parsley and serve hot.