Prepare the onions: Use a sturdy knife to slice approximately 1/2-inch off each stem end and roots off the root end. Cut each onion in half, stem to root, and peel. Lay the onions cut-side-down and cut, again from stem to root, into slices approximately 1/4 to 1/2-inch thick. Repeat with all onions.
Start cooking the onions: Set a large, heavy-bottomed sauté pan or skillet over medium heat. Add the olive oil and butter (if using) and swirl to coat the bottom of your pan. Heat the oil until shimmering and hot, then add the onions. Mix well to coat the onions in oil.
Continue to cook your onions: Allow your onions to cook, stirring occasionally. If you start to see your onions browning, reduce heat to medium-low (remember: we're cooking these onions low and slow). After approximately 10 minutes, sprinkle with salt (approximately 1/2 teaspoon) and stir to combine. By this point, your onions should be softening and lightly golden. If your onions start to dry out and brown/burn prematurely, as a result, (assuming your heat is set to medium-low), add a few teaspoons of water to the pan.
Continue to cook, stirring often: Continue to cook your onions for an additional 30-45 minutes, stirring every 2-3 minutes to prevent burning. You don't want to stir continuously, but just often enough that the onions have enough time to cook and stick to the bottom of your skillet, browning just slightly - but not burning. If you stir too often, they won't brown. If you don't stir often enough, they will burn. I like to keep my stove set to medium-low and cook my onions for at least 50-60 minutes.
Use a metal spatula to scrape your pan often: After the first 30 minutes, you'll find that your onions are nice a deeply rich golden color. Every minute or so, use a metal spatula to scrape up the brown bits from the bottom of your skillet. Continue to cook, stir, and scrape the brown bits from the bottom of the pan until your onions are a rich golden brown color.
Serve or store: Remove from heat and serve with all your favorite recipes or transfer to a sealed container and keep stored in the refrigerator for up to 4 days.