In a large pot of boiling salted water, cook pasta until al dente, 10 to 12 minutes. Drain, reserving 3 Tbsp. pasta water; set aside pasta and water.
Heat oil in a large nonstick skillet over medium heat. Add onion and cook until translucent, about 4 minutes. Stir in peas and reserved pasta water and cook for 1 minute. Add tomatoes and cook just until softened, 1 to 2 minutes. Remove from heat.
In same pasta pot, melt butter over medium heat. Stir in cream and cheese; season to taste with salt and pepper. Cook sauce, stirring, for about 3 minutes. Add vegetable mixture, pasta and ham, and toss together until well combined. Serve warm.