1. Bring a large pot of salted water to boil. Add pasta and cook until al dente, 8 to 10 minutes. Add broccoli for last 2 to 3 minutes of cooking time. Drain and return to pot.
2. While pasta is cooking, melt butter over medium heat in a large skillet. Add onion and sauté until softened, about 3 minutes. Add ham and cook, stirring, 2 minutes longer. Stir in cream, bring to a simmer and cook, stirring occasionally, until thickened, 3 to 5 minutes.
3. Scrape cream mixture into pot with pasta and broccoli. Add cheese and toss to combine. Season with salt and pepper and serve immediately, passing more Parmesan, if desired.