Peel and slice 3 lbs russet potatoes 1/4-inch thick. Place in a large pot, cover with cold salted water, bring to a boil, then simmer 7-10 minutes until fork-tender. Drain well. In the pot, gently toss warm potatoes with 4 tbsp melted butter, 1/2 cup milk/cream, 1/2 tsp garlic powder, salt, and pepper. Set aside.
In a large skillet over medium-high heat, brown 2 lbs ground beef for 6-8 minutes, breaking it apart. Drain excess fat. Add 1 large chopped onion and sauté 3-5 minutes until softened. Stir in 3 cloves minced garlic and cook 1 minute until fragrant.
Add 2 tbsp tomato paste and cook 1-2 minutes. Pour in 1 (14.5 oz) can diced tomatoes (undrained) and 1 cup beef broth. Stir in 1 tsp oregano, 1 tsp thyme, 1 tsp paprika, and 1/2 tsp cayenne (optional). Season with salt and pepper. Bring to a simmer, then reduce heat to low, cover, and cook for 10-15 minutes until flavors meld and sauce thickens.
Preheat oven to 375°F (190°C) and grease a 9×13-inch baking dish. Layer half of the seasoned potatoes in the dish. Spread the cooked ground beef filling evenly over the potatoes. Sprinkle with 1 cup sharp cheddar cheese and 1/2 cup Monterey Jack cheese. Top with the remaining potato slices.
Cover the dish tightly with foil and bake for 30 minutes. Remove foil and bake uncovered for another 15-20 minutes, or until the cheese topping is golden brown and bubbly.
Let the casserole rest for 10-15 minutes before serving to allow layers to set. Garnish with fresh parsley if desired.