In a large saucepan, drizzle the olive oil over medium heat. Add the onions.
Thinly slice the Swiss chard stems and add to the onions. Cook, stirring occasionally, until both are starting to soften, about 5 minutes.
Stir in the garlic and cook until just fragrant, 30 seconds to 1 minute.
Add the sliced mushrooms. Cook, stirring occasionally, until lightly browned and just softened, about 5 minutes. Add a little more olive oil if needed.
Toss in the balsamic vinegar, salt, and pepper.
Stir in the orzo until well-coated.
Pour in the vegetable broth and bring to a simmer. Cook until orzo is nearly tender, but still firm.
Chop the Swiss chard leaves and add to the soup. Cook just until vibrant green and slightly wilted.
Adjust seasonings to taste and serve immediately with a sprinkling of fresh Parmesan if desired.