Fast casual Mexican is one of the most forgiving restaurant categories if you eat there regularly . and one of the sneakiest if you don't pay attention. The same menu can produce a 370-calorie, fiber-heavy bowl with 25g of protein, or a 1,200-calorie, 2,100mg-sodium brick you assembled while thinking you were being "good." The difference is almost never willpower. It's information.
So instead of a list of hard rules or the usual "eat more vegetables" advice, here's how I actually think about ordering at Moe's when I want to eat well without turning lunch into a spreadsheet exercise.
Bowl over burrito . this is the one that actually matters
If you remember nothing else from this piece, remember this: the flour tortilla costs you 300 calories, 50g of carbs, and 480mg of sodium before any filling goes in. That's the wrapper. Not the meat, not the rice, not the cheese . the wrapper.
Swapping a burrito for a bowl deletes all of that. You lose nothing on taste, because every filling stays the same. It's the highest-leverage swap on the entire menu, and it takes zero discipline because the switch happens at the order step, not mid-meal.
The salad base is comparable (15 cal, 30mg sodium). Equally fine. I tend to go bowl because I find the lettuce-in-a-bowl version underwhelming once everything warm lands on top, but if you like your food colder and crunchier, the salad works.
Pick your protein on purpose
Here are the actual numbers for each option:
- Tofu . 120 cal, 12g protein, 80mg sodium (lowest on all three)
- Chicken . 200 cal, 30g protein, 240mg sodium
- Pork . 240 cal, 26g protein, 260mg sodium
- Steak . 250 cal, 28g protein, 280mg sodium
- Ground beef . 280 cal, 24g protein, 320mg sodium
Chicken is the efficient pick for most goals . best protein-per-calorie ratio, lowest sodium among the meats. Steak is close and fine if you like it. Ground beef is the heaviest option by a noticeable margin, and honestly, at most Moe's the steak is more interesting anyway.
For plant-based eating, tofu with beans gets you to 20g+ protein in the bowl, which is more than enough for a real lunch. Nobody should feel bad about ordering chicken, and nobody should feel bad about ordering tofu.
Add the beans. This isn't negotiable.
The beans are the most underrated ingredient on the menu. At 130–140 calories a serving, you get 8–9g of protein and 6–7g of fiber. That's more fiber in one scoop than most people eat in a day.
Fiber is the thing that makes a fast casual Mexican meal actually hold you for four hours instead of two. It slows digestion, blunts the post-lunch blood sugar spike, and makes the meal feel substantially more filling than the calorie count suggests. A chicken bowl without beans is a fine lunch. A chicken bowl with beans is a lunch that doesn't leave you hunting for a snack at 3pm.
Pinto have slightly more protein. Black have slightly more fiber. Either works. I'd pick whichever you find tastier and move on.
Rice is the first thing to cut, but only if you actually need to cut something
Cilantro lime rice is the highest-calorie topping on the line at 210 calories, 42g carbs, 420mg sodium. It's also the topping with the lowest protein-to-calorie ratio among the substantial ingredients.
Is rice "bad"? No. It's rice. It tastes good, it provides energy, and if you're an active person who needs carbohydrates for performance, it belongs in your bowl. But if you're trying to stay under a calorie ceiling, it's the first topping I'd drop. You won't lose protein (the rice only adds about 4g). You save 210 calories and a chunk of sodium. Your beans are still providing complex carbs for satiety.
The question I ask myself at the counter is: "Am I going to the gym after this, or am I going to sit at a desk?" If it's the desk, no rice. If it's the gym, yes rice. It's not more complicated than that.
The free toppings are free calories' best-case scenario
Three toppings at Moe's are effectively zero calories: pico de gallo (10 cal), lettuce (5 cal), and jalapeños (5 cal). Twenty calories for three entirely different flavor and texture contributions.
These are the toppings that make a "light" bowl feel like an actual meal instead of a sad pile of protein. Pico adds acidity and fresh tomato. Lettuce adds volume and crunch. Jalapeños add heat, and the capsaicin has some mild metabolic effects (nothing worth building a diet around, but not nothing either).
There's literally no reason to skip any of these, and people skip them constantly because the line moves fast. Slow down at the toppings station. Get all three.
Be selective with the premium toppings
Guacamole, cheese, sour cream and queso are the paid additions. They're not inherently "bad" . they're just concentrated calories, and concentrated calories deserve intentionality.
- Guacamole . 160 cal, 14g fat (mostly monounsaturated, the avocado kind), 2g net carbs, 6g fiber. Expensive in calories, but the fiber and healthy fat make it a genuine win if you like it.
- Cheese . 110 cal, 9g fat, 7g protein. Best for protein purposes.
- Sour cream . 60 cal, 5g fat. Lowest-impact premium topping. Good for flavor if you want it.
- Queso . 80 cal, 6g fat, 4g protein. Middle of the pack, decent.
My rule of thumb: one or two premium toppings per meal, not four. Guac plus cheese is a classic pairing and nutritionally reasonable. Guac plus cheese plus sour cream plus queso lands you at ~410 extra calories on top of the base and protein, and you're looking at an 800-calorie bowl before you've done anything creative with it.
Sodium is the surprise boss fight
Most people think about calories at Moe's. Fewer people think about sodium, and sodium is where fast casual Mexican quietly catches you off guard. A standard build . tortilla, chicken, rice, beans, cheese . clocks in around 1,400–1,700mg of sodium, which is 60–74% of the American Heart Association's recommended daily ceiling. Add queso and hot sauce and one meal can push past the full daily limit.
If you've been told to watch sodium for blood pressure or any other reason, here's the short version of how to cut it: bowl instead of tortilla (saves 480mg), skip rice (420mg), lean protein instead of ground beef (saves ~80mg), and favor pico and lettuce over queso and sour cream. A tofu-and-black-bean bowl with pico and jalapeños comes in around 380mg of sodium, which is astonishingly low for a restaurant meal.
Full breakdown in the Moe's sodium guide if this applies to you.
Pre-plan, don't freestyle
This is the most useful habit and the one nobody does. Most people decide what to order in real time, at the counter, with a line behind them, while smelling fajita meat. That's a terrible environment for making a nutrition-sensitive decision.
Thirty seconds of thinking before you leave the house . or while you're walking in . will give you a better order than five minutes of indecisiveness at the glass. Pick your base, your protein, your beans, and your top 1–2 premium toppings before you're asked. Stick to it. Adjust next time if it wasn't enough food.
You can use the calculator to build any order and see calories, protein, fat, carbs, fiber and sodium in real time. Takes a minute.
Three sample builds for reference
Lean and light (around 370 cal): Bowl + tofu + black beans + pico + lettuce + jalapeños. ~25g protein, ~14g fiber, very low sodium. A legitimate "I ate a bowl of vegetables" meal that actually fills you.
Performance-oriented (around 650 cal): Bowl + chicken + rice + pinto beans + cheese + pico. ~53g protein, ~12g fiber. Solid post-workout or busy-day fuel.
Balanced (around 540 cal): Bowl + chicken + black beans + guacamole + pico + lettuce. ~48g protein, ~14g fiber. My personal default when I don't feel like thinking about it.
All three are real food. None of them require saying no to everything. They just reflect a few small decisions that most people skip.
For more detail, see the lowest-calorie Moe's meals, high-protein Moe's builds and keto-friendly Moe's orders.