Bring a large pot of salted water to a boil and cook pasta until al dente. Reserve 1 cup pasta water, then drain.
Heat butter and olive oil in a large skillet over medium-low heat.
Add onions and a pinch of salt; cook slowly, stirring occasionally, until deeply caramelized, about 25–30 minutes.
Add garlic and cook until fragrant.
Deglaze the pan with broth, scraping up any browned bits.
Stir in cream and simmer gently until slightly thickened.
Remove from heat and stir in cheese until smooth.
Add pasta and toss to coat, using pasta water to adjust consistency.
Season with pepper and additional salt if needed. Serve warm.