Heat olive oil in a large saucepan over medium-high heat and sauté onion until translucent.
Add rice and cook, stirring, until toasted and glassy-looking but not browned.
Stir in 2 cups of broth and bring to a simmer. Stir constantly until broth is absorbed, then add the rest of the broth and water one cup at a time. Continue until rice is al dente and creamy, 20-25 minutes.
Remove from heat and stir in eggs and parmesan.
Spread the risotto across a baking sheet and refrigerate to at least room temperature. While the risotto is cooling, make your filling.
Preheat the oven to 375°.
Scoop about 2 tablespoons of risotto into the palm of your hand. Press into a flat disk and place the filling in the center. If you’re using meat or mushroom filling, press a cube of mozzarella into the center as well.
Fold the edges of the risotto together to seal the filling inside, then gently roll it between your palms to form a ball.
Coat the ball in flour and shake off any excess. Dip in beaten eggs, then roll it in breadcrumbs and place on a baking sheet.
Repeat for the rest of the risotto mixture. Spray the tops with olive oil to coat.
Bake at 375° for 20 minutes until golden brown. Turn on the broiler for two minutes to make them extra crispy, but watch closely so they don’t burn.
Serve hot with a marinara dipping sauce.