Place cubed potatoes in a large pot of salted water, bring to a boil, and cook for 15 to 20 minutes until fork-tender.
While potatoes boil, season the steaks with 1 teaspoon of salt and 0.5 teaspoon of pepper, then dredge thoroughly in flour, shaking off excess.
Heat vegetable oil in a large heavy-bottomed skillet over medium-high heat; sear steaks for 3 to 4 minutes per side until a crust forms, then remove to a plate.
Reduce skillet heat to medium and add 2 tablespoons of butter and sliced onions; cook for 15 to 20 minutes, stirring frequently until onions are deep golden brown.
Sprinkle 2 tablespoons of the remaining dredging flour over the onions and cook for 2 minutes to form a roux.
Gradually whisk in the beef broth and Worcestershire sauce, scraping the bottom of the pan to release browned bits; bring to a simmer.
Return the steaks and any accumulated juices to the skillet, cover, and simmer on low for 25 minutes until the meat is tender and the gravy is thickened.
Drain the cooked potatoes and return to the pot; mash with the remaining 2 tablespoons of butter, milk, minced garlic, and remaining salt and pepper.
Plate the mashed potatoes and top with a steak and a generous portion of the onion gravy.