Prep the potatoes. Dice the potatoes into small cubes (about 1/2 inch) so they cook quickly.
Rinse and pat dry. If using hash browns, keep them frozen until they hit the pan.
Cook the bacon. In a large skillet over medium heat, cook bacon until crisp. Transfer to a paper towel–lined plate.
Pour off most of the bacon fat, leaving about 1 tablespoon in the pan for the potatoes.
Cook the potatoes. Add diced potatoes to the skillet with the reserved bacon fat. Season with salt, pepper, and a pinch of cumin or smoked paprika if you like. Cook, stirring occasionally, until golden and tender, about 10–12 minutes.
If using onion and bell pepper, add them in the last 5 minutes to soften.
Scramble the eggs. Whisk eggs with a pinch of salt, pepper, and a splash of milk if using. In a clean nonstick pan over medium-low heat, melt a little butter. Pour in the eggs and stir gently with a spatula until soft and just set.
Remove from heat while they’re still slightly glossy—carryover heat will finish them.
Warm the tortillas. Heat each tortilla in a dry skillet for 15–20 seconds per side, or wrap a stack in a damp paper towel and microwave for 30–45 seconds. Warm tortillas bend without cracking and roll more neatly.
Assemble. Lay a warm tortilla on a flat surface. Add a line of potatoes, then eggs, crumbled bacon, and a handful of shredded cheese.
Spoon on salsa, add cilantro, and a small dollop of sour cream if you like. Keep fillings in a narrow strip down the center.
Roll it tight. Fold the sides in toward the center, then roll from the bottom up, keeping everything snug. If needed, secure the seam with a little cheese that will melt or a quick toast in the pan.
Toast (optional but recommended). Place the burrito seam-side down in a lightly oiled skillet over medium heat for 1–2 minutes per side until the tortilla is golden and crisp.
This step locks everything in and adds a satisfying crunch.
Serve. Slice in half if you like and serve with extra salsa or hot sauce.