I’m excited to share this tasty sandwich recipe from my kitchen: a hearty, flavour-packed version of the beloved Malaysian street food, Roti John. With minced beef, eggs, onion and warm toast, it’s a satisfying meal whether I’m having it as a snack or a full lunch.
Why You’ll Love This Recipe
I love this recipe because it brings together savoury minced meat, eggs and toasted buns into one fun sandwich. The flavours are bold but approachable — a little curry powder, paprika and cumin give the meat mixture a subtle warmth without being too spicy. And I adore the contrast of textures: the soft interior of the filling, the crisp-toasted bun, and the fresh shredded cabbage. Plus, it’s surprisingly simple to make, so it’s a great option for a quick weekday meal or an easy dinner treat.
Ingredients
(Tip: You’ll find the full list of Ingredients and measurements in the recipe card below.) Meat & Egg Mixture
½ lb (about 225 g) ground beef (or substitute any ground meat of choice)
¼ of a medium onion, diced
1 tbsp curry powder
½ tbsp ground cumin
½ tsp salt
¼ tsp sugar
½ tsp paprika
2 large eggs
Other Ingredients
2 to 4 hot-dog style buns (depending on bun size & appetite)
A smear of Japanese-style mayonnaise (or any creamy mayo)
Sriracha or chilli sauce (to taste)
2 cups shredded cabbage
2 slices of cheese (optional)
Directions
Heat a frying pan over medium heat and sauté the diced onion until it becomes translucent.
Add the ground beef along with the curry powder, cumin, salt, sugar and paprika. Break up the meat and stir until it’s fully cooked through.
Remove the pan from heat and allow the mixture to cool slightly. Then break the eggs into the same pan and stir until everything is well combined.
Prepare the buns: spread a layer of mayonnaise on the inside of each bun.
In a clean frying pan, melt a knob of butter together with a little oil over medium heat. Place each bun (inside side down) in the pan and toast until golden, then remove from the pan.
Return the pan to medium-low heat. For each sandwich, pour about ¼ to ½ cup of the meat-egg mixture (sized to match the bun). If using cheese, place a slice on top of the mixture now.
Place one toasted bun inside side down onto the mixture in the pan and press gently with a spatula. Cook for about 2-4 minutes until the bottom is set.
Carefully flip the whole sandwich (use two spatulas if needed) and press down again. Cook for another 1-2 minutes until the other side is cooked and the cheese (if used) is melted.
Remove from the pan. Add shredded cabbage inside the bun, then squeeze on a generous amount of mayonnaise and Sriracha/chilli sauce. Fold one side of the bun over the other and gently press.
Slice the sandwich in half and serve immediately while hot.
Servings And Timing
Prep time: ~15 minutes
Cook time: ~25 minutes
Total time: ~40 minutes
Serves: 2 sandwiches
Variations
I sometimes use ground chicken or turkey instead of beef for a lighter version.
To make it vegetarian, I replace the meat with crumbled tofu or cooked lentils and skip or substitute cheese accordingly.
I’ll add additional condiments like sweet chilli sauce, barbecue sauce or a spicy mayo instead of Sriracha for varied flavour.
For extra crunch, I can include pickled onions or sliced cucumber inside.
If I prefer a cheesier finish, I’ll melt two slices of cheese inside before folding the bun.
Storage/Reheating
If I have leftovers, I wrap the sandwich in foil and refrigerate for up to one day. To reheat, I place it in a pre-heated oven or toaster oven at about 180 °C (350 °F) for 5-7 minutes until heated through and the bun is crisp again. Alternatively, I’ll unwrap and reheat in a skillet over medium heat, covering with a lid for a minute to warm the filling thoroughly, then flip to crisp the other side.
FAQs
How can I make this sandwich spice-free?
You can omit or greatly reduce the curry powder, paprika and Sriracha/chilli sauce. Instead, use mild seasonings like a pinch of salt and a dash of sweet paprika for colour and flavour without heat.
Can I prepare parts of this ahead of time?
Yes — you can cook the meat-egg mixture earlier in the day, refrigerate it, and then assemble and toast the sandwich just before eating so the bun stays crisp.
What if I don’t have hot-dog buns?
That’s fine — you can substitute any oblong or soft bun. A small baguette or sub roll works well. I just make sure the filling portion matches the size of the bun so the sandwich holds together.
Can I freeze the sandwich?
I don’t recommend freezing the fully assembled sandwich because the bun may become soggy. You can freeze the cooked filling separately for up to a month. When ready, thaw and quickly reheat, then assemble into fresh toasted buns.
Is there a vegan version of this recipe?
Absolutely. I substitute the ground meat with crumbled tofu, tempeh or a plant-based ground “meat” substitute. Then use a vegan egg alternative or skip the eggs altogether, and choose vegan mayonnaise and cheese.
Conclusion
Making this homemade version of Roti John has become one of my favourite go-to meals when I need something satisfying but manageable. The combination of warm, well-seasoned filling and toasted buns topped with crisp cabbage and bold sauces hits all the right notes. I hope you’ll enjoy making — and eating — it as much as I do.
This Simple Homemade Roti John is a Malaysian-style sandwich made with spiced minced beef and eggs, toasted inside a bun, then topped with cabbage, mayo, and chilli sauce. A satisfying, street food-inspired dish that’s quick to prepare and packed with flavor.
Total Time:40 minutes
Yield:2 sandwiches
Ingredients
½ lb (about 225 g) ground beef (or any ground meat)
¼ medium onion, diced
1 tbsp curry powder
½ tbsp ground cumin
½ tsp salt
¼ tsp sugar
½ tsp paprika
2 large eggs
2 to 4 hot-dog style buns
Japanese-style mayonnaise (or any creamy mayo)
Sriracha or chilli sauce, to taste
2 cups shredded cabbage
2 slices of cheese (optional)
Instructions
Heat a frying pan over medium heat and sauté diced onion until translucent.
Add ground beef, curry powder, cumin, salt, sugar, and paprika. Cook until meat is browned and cooked through.
Remove from heat and let cool slightly. Add eggs and stir to combine with the meat.
Spread mayonnaise inside the buns.
In a clean pan, heat butter and oil over medium heat. Toast buns (inside down) until golden. Set aside.
Return pan to medium-low. Pour about ¼ to ½ cup of the meat-egg mixture per sandwich into the pan. Top with cheese if using.
Place a toasted bun (inside down) onto the mixture. Press gently with a spatula and cook for 2–4 minutes.
Flip the sandwich carefully and press. Cook another 1–2 minutes until golden and cheese is melted.
Remove from pan, open bun slightly, add shredded cabbage, and drizzle with mayo and Sriracha.
Fold the sandwich, press gently, slice in half, and serve hot.
Notes
Use ground chicken or turkey for a lighter version.
Vegetarian option: use crumbled tofu or cooked lentils instead of meat.
Adjust spice level by reducing curry powder or skipping chilli sauce.
Reheat leftovers in an oven or skillet for best texture.
Freeze the filling (not the whole sandwich) for up to a month.