Heat oven to 375°F. Lightly oil a 9x13-inch baking dish.
Boil shells in salted water until just shy of al dente. Drain and cool on a tray.
Warm olive oil in a large skillet over medium heat. Brown the beef, breaking it up.
Stir in onion and cook until softened. Add garlic and cook 30 seconds.
Sprinkle in taco seasoning and pour in water. Simmer until thick and glossy.
Take off heat. Mix in cream cheese until melted and creamy. Cool 5 minutes.
Fold in black beans, corn, 1/2 cup salsa, and half of both cheeses. Season with salt and pepper.
Spread 3/4 cup salsa over the bottom of the baking dish.
Stuff each shell with the beef mixture. Arrange stuffed shells snugly in the dish.
Spoon remaining salsa over shells and scatter with the rest of the cheeses.
Cover with foil and bake 20 minutes. Uncover and bake 5–7 minutes until bubbly and golden.
Let rest 5 minutes. Top with cilantro and green onions. Serve with sour cream.