Place the chicken or vegetable stock in a medium saucepan and heat until it reaches a gentle simmer. Keep the stock warm over low heat so it does not boil.
In a large pot or Dutch oven over medium-low heat, melt 2 tablespoons of butter with the olive oil. Add the chopped onion and salt. Cook slowly for 6–7 minutes, stirring often, until the onion becomes soft and translucent.
Add the garlic and cook for about 30 seconds until fragrant.
Add the Arborio rice to the pot and increase the heat slightly to medium. Stir continuously for 2–3 minutes until the rice grains are coated in butter and look slightly translucent around the edges.
Pour in 1 cup of warm stock and the lemon juice. Stir while scraping the bottom of the pot to release any flavorful bits. Cook until most of the liquid is absorbed.
Add one ladle of hot stock to the rice and stir gently. Cook until the liquid is nearly absorbed before adding more.
Continue adding stock one ladle at a time, stirring regularly and allowing the liquid to nearly disappear before adding the next ladle. Repeat this process for about 20–25 minutes.
Taste the rice near the end of cooking. The grains should be tender but still slightly firm in the center (al dente).
Stir in the remaining 2 tablespoons of butter and the grated Parmesan cheese. Mix until melted and creamy.
Spoon the risotto into warm bowls. Garnish with extra Parmesan, freshly cracked black pepper, and chopped parsley. Serve immediately.