Cook pasta in a large pot of boiling salted water until al dente, according to package instructions. Drain pasta; return to pot.
Meanwhile, heat butter in a saucepan over medium heat. Add onion; cook, stirring, until soft, 3 to 4 minutes. Add peas and half-and-half; season with salt and pepper. Simmer until thickened, 3 to 4 minutes.
Cut ham into strips. Add to sauce; cook until heated through, 1 to 2 minutes. Toss sauce with pasta. Serve with grated Parmesan.