Add beef to a 10-inch cast iron skillet set over medium heat. Cook beef, stirring often, until it is no longer pink, about 8-10 minutes. Transfer beef to a paper towel-lined plate and wipe the skillet dry with a paper towel.
Add oil, butter and carrots to the skillet, still set over medium heat. Cook carrots 3 minutes, occasionally stirring. Add onions and cook until onions are translucent and carrots and onions have softened, about 5-6 minutes.
Add garlic, tomato paste, thyme, red pepper flakes, salt & pepper. Stir and cook an additional 1-minute.
Add the cooked beef and stir.
Stir in flour and cook 1-minute.
While stirring and scraping up any browned bits, add the broth, Worcestershire Sauce and Madeira. Continue stirring until no lumps remain.
Bring to a boil, reduce heat to low and simmer, stirring occasionally, about 10 minutes or until mixture has slightly thickened.
Remove from heat and add peas. Season to taste with additional salt & pepper, if needed.
Adjust oven rack to upper-middle position and set oven to broil.
Spoon the mashed potatoes, in an even layer, over the beef mixture and smooth with the back of a spoon. Use the tines of a fork to make ridges on the surface of the potatoes.
Sprinkle the potatoes with grated Parmesan and set the skillet in the oven.
Broil 5-10 minutes or until the potatoes are golden brown and crusty in spots.
Transfer skillet to a cooling rack and cool about 5-10 minutes before serving. Sprinkle with chopped fresh parsley, if desired.