Heat a large skillet over medium-high heat. Cook and stir ground beef & onion in the hot skillet until browned and crumbly, 5 to 7 minutes.
Add beef broth Season with salt and pepper; lower heat and simmer for 15 minutes, stirring occasionally, until slightly thickened.
Preheat the oven to 400 degrees F (200 degrees C).
Place diced potatoes in a medium saucepan; cover with water and place over high heat. Bring to a boil and simmer until potatoes are tender, about 15 minutes; drain. Mash potatoes until smooth, add milk and butter; whip until fluffy. Season with salt and pepper
Spoon ground beef mixture into a baking dish; spread mashed potatoes on top, add butter, and fork across the top of the mashed potato.
Bake in a preheated oven until the top is browned for around 20/25 minutes
Sprinkle with grated Cheddar cheese (optional) for an additional 5 minutes