Heat the olive oil in a large, heavy-bottomed pot or Dutch oven over medium heat. Add the onion and cook until softened, about 5-7 minutes. Add the garlic and cook for another minute until fragrant.
Add the Arborio rice to the pot and toast for 2-3 minutes, stirring constantly.
Pour in the white wine (if using) and stir until absorbed, about 1-2 minutes.
Add 3 cups of warm vegetable broth to the pot. Bring to a gentle simmer, then cover the pot tightly and reduce the heat to low. Simmer for 20-25 minutes, or until the rice is almost fully cooked and most of the broth has been absorbed.
Remove the lid and check the consistency of the risotto. If it is dry, add the remaining broth, 1/2 cup at a time, until the desired consistency is reached.
Stir in the butter and grated Parmesan cheese until fully incorporated and the risotto is creamy
Season to taste with salt and pepper. Serve immediately, garnished with extra Parmesan cheese and fresh herbs, if desired.
Notes
For a richer flavor, use chicken broth instead of vegetable broth. Adjust the amount of broth for the desired consistency.