Some foods just feel like a warm hug, you know? This soup is one of them. It’s simple, cozy, and packed with the kind of flavors that make you feel good from the inside out.
I’ve always loved Mexican food, but I used to think getting that deep, simmered-all-day flavor took, well, all day. I don’t have time for that on a Tuesday night. So, I figured out a shortcut, a little trick that’s used in authentic Mexican kitchens: roasting the tomatoes.
Seriously, this one small step is a total game-changer. It creates a smoky, savory, and incredibly satisfying soup in less than an hour. It’s become my new favorite weeknight meal, and I think it might become yours, too.

A Quick Look at the Recipe
Before we start chopping, here’s what you’re getting into.
- Total Time: About 45 minutes from start to finish. You’ll need 30 minutes for prep (while the tomatoes roast) and a quick 15-minute simmer.
- How Much It Makes: You’ll get about 3 big bowls of soup. It’s perfect for a small dinner. A little heads-up: the rice soaks up the broth overnight, so it’s best eaten fresh.1 But don’t worry, I’ve got tips for leftovers below!
- Skill Level: Super easy. If you can chop an onion and press a button on a blender, you’ve got this.
What You’ll Need (The Gear)
You don’t need any fancy gadgets for this. Just a few kitchen basics:
- A baking sheet
- A soup pot or a Dutch oven
- A blender (A regular one works great, but an immersion or stick blender is also perfect. Just be careful since the soup will be hot!)
The Ingredients (The Heart of the Soup)
The magic here is in the simple stuff. Let’s talk about what we’re using.
For our flavor base, we’ll start with 3 plum tomatoes, 1/2 an onion, and 2 whole garlic cloves. Plum tomatoes are great because they’re meaty and have fewer seeds, making them perfect for roasting. This roasting step is our secret weapon. It caramelizes their natural sugars and adds a smoky depth that makes the soup taste amazing.
You’ll also need 3 cups of stock. A good vegetable or chicken stock really makes a difference. I usually grab a low-sodium kind from the store so I can control the saltiness myself.
To make it hearty, we’ll use one 15-ounce can of beans (black beans or pinto beans are classic choices) and 1/3 cup of uncooked white rice. Just simple, long-grain white rice is all you need.
Now for the soul of the soup—the spices! The absolute star is a single chipotle in adobo. These are smoked jalapeños packed in a tangy red sauce. They bring a smoky heat that is just perfect. We’ll also add 2 teaspoons of Mexican oregano, which is a bit more earthy than the kind you put on pizza, plus a pinch of cumin, salt, and pepper.2
Let’s Make Some Soup! A Step-by-Step Guide
Alright, let’s get to the fun part. I’ll walk you through everything.
Step 1: Roast for Flavor
First up, get that oven hot. Preheat it to 400°F (200°C).
Wash the tomatoes, pull off the stems, and toss them on your baking sheet. Slide them into the oven for about 30 minutes. You’re looking for the skins to get blistered and a little charred. The tomatoes will get soft and kind of collapse on themselves. Your kitchen will start to smell incredible. This is how we build that deep, authentic flavor.

Step 2: Build the Base
While the tomatoes are in the oven, let’s get the rest of the base ready.
Roughly chop the half onion and peel the garlic cloves. No need for a perfect dice here; it’s all going in the blender anyway.
Add a little oil to your soup pot over medium heat. When the oil shimmers, add the onion and garlic. Cook them until the onion softens and gets some nice brown edges. That sweet smell of cooking onion and garlic? It’s one of my favorite parts of cooking.
Once the tomatoes are done, carefully put them in the blender along with the cooked onion and garlic. Don’t leave any of those tasty juices on the pan! Add one chipotle pepper. Quick tip: If you don’t like a lot of heat, start with just half a chipotle. You can always add more later!
Blend it all up until it’s totally smooth. Pour this beautiful orange-red puree back into your soup pot and let it cook for a couple of minutes. This step cooks out any raw taste and makes the flavor even richer.

Step 3: Simmer and Finish
This is the home stretch.
Pour the 3 cups of stock into the pot with your tomato base. Add the uncooked rice, the rinsed beans, the Mexican oregano, cumin, salt, and pepper. Give it a good stir.
Bring it all to a boil, then immediately turn the heat down to low. Pop a lid on the pot and let it simmer for 15 minutes. This should be just enough time for the rice to get tender. Try not to wander off! The rice is thirsty and will keep drinking the broth. After 15 minutes, give it a check. The rice should be soft, but not mushy. If you cook it too long, you’ll have porridge instead of soup. And nobody wants that.
Before you serve, give it one last taste. Does it need more salt? Maybe another pinch of oregano? Now’s the time to adjust.

A Few Ways to Mix It Up
One of my favorite things about this soup is how easy it is to tweak. Here are a few ideas:
- For a Vegan Soup: This is an easy one! Just use vegetable stock and skip the cheese garnish (or find a good plant-based version). The soup is also naturally gluten-free.
- Control the Heat: Want it milder? Use half a chipotle pepper and scrape out the seeds. Want it spicier? Use the whole chipotle and a teaspoon of the adobo sauce it comes in.
- Make it Heartier: Feel free to toss in a cup of frozen corn or some diced bell peppers along with the stock. If you want to add meat, some cooked and crumbled chorizo or bacon would be delicious.

Making a Bigger Batch for Later
Want to make extra? Great idea. The trick is to make the soup base ahead of time but leave out the rice until you’re ready to eat.
Here’s a simple chart to scale up the base:
Servings | Tomatoes | Onion | Garlic | Chipotle | Stock | Beans (cans) |
3 (This Recipe) | 3 plum | 1/2 | 2 cloves | 1 | 3 cups | 1 |
6 | 6 plum | 1 whole | 4 cloves | 1-2 | 6 cups | 2 |
9 | 9 plum | 1.5 whole | 6 cloves | 2-3 | 9 cups | 3 |
When you want to eat, just heat up the soup base, add about 1/3 cup of rice for every 3 servings, and simmer for 15 minutes. Easy!
Serving and Storing
Now for the best part—eating it! Ladle the hot soup into bowls and have fun with the toppings.
- A squeeze of fresh lime juice is a must. It brightens everything up.
- Crumbled Queso Fresco or cotija cheese adds a salty, creamy touch.
- A sprinkle of fresh cilantro gives it a burst of freshness.
This soup is a great meal all by itself, but it’s also great with warm corn tortillas for dipping.

Storing Leftovers:
Like I said, this soup is best the day it’s made.
If you have leftovers, they’ll keep in the fridge for about 2 days. Just know that the rice will soak up most of the broth, so it will be more like a thick stew the next day (still delicious, though!).
When you reheat it, do it gently on the stove and add a splash of stock or water to get it back to a soup consistency.
The Best Way to Meal Prep:
If you want to make this ahead, follow the recipe through Step 2 (after you’ve blended and cooked the tomato base). Let that base cool, and you can store it in the fridge for up to 4 days or freeze it for 3 months.
When you’re ready for dinner, just thaw the base, bring it to a simmer, and pick up at Step 3 by adding the stock, rice, and beans. It’s the perfect way to have a nearly-homemade meal ready to go.
PrintMexican Beans and Rice Soup
This smoky, savory soup tastes like it simmered for hours but comes together in under an hour! Roasting the tomatoes is the simple secret to its incredible depth of flavor. It’s the perfect cozy meal for any night of the week.
- Prep Time: 30 minutes
- Cook Time: 15 minutes
- Total Time: 45 minutes
- Yield: 3 1x
- Category: Soup, Main Dish
- Cuisine: Mexican
Ingredients
- 3 plum tomatoes
- 1/2 an onion, roughly chopped
- 2 whole garlic cloves, peeled
- 1 chipotle in adobo pepper (use more or less for desired heat)
- 3 cups vegetable or chicken stock
- 1 (15-ounce) can black or pinto beans, drained and rinsed
- 1/3 cup uncooked long-grain white rice
- 2 tsp Mexican oregano
- A pinch of ground cumin
- Salt and freshly cracked black pepper, to taste
- Splash of oil for cooking
Instructions
- Roast the Tomatoes: Preheat your oven to 400°F (200°C). Place the whole plum tomatoes on a baking sheet and roast for 30 minutes, until the skins are blistered and the tomatoes are soft.
- Sauté the Aromatics: While the tomatoes roast, heat a splash of oil in a soup pot over medium heat. Add the onion and whole garlic cloves and cook until the onion has softened and has some browned edges.
- Create the Soup Base: Carefully transfer the roasted tomatoes (with their juices) and the cooked onion and garlic to a blender. Add the chipotle pepper and blend until completely smooth. Pour this puree back into the soup pot.
- Simmer the Soup: Add the stock, rinsed beans, uncooked rice, oregano, cumin, salt, and pepper to the pot. Stir to combine, bring to a gentle boil, then reduce the heat to low. Cover and simmer for 15 minutes, or until the rice is tender.
- Serve: Taste and adjust seasoning if needed. Ladle into bowls and add your favorite toppings.
Notes
- Serving Suggestions: This soup is fantastic with a squeeze of fresh lime juice, a sprinkle of crumbled Queso Fresco or cotija cheese, and fresh cilantro. Serve with warm corn tortillas for dipping!
- Tips & Tricks: You are in complete control of the spice level. For a milder soup, use only half a chipotle pepper and scrape out the seeds. For more heat, add a little extra adobo sauce from the can.
- Storage & Reheating: Store leftovers in an airtight container in the refrigerator for up to 2 days. The rice will absorb the broth and the soup will become much thicker. To reheat, warm it gently on the stovetop and add a splash of stock or water to loosen it to your desired consistency.
- Make-Ahead Tip: The tomato base (Step 3) can be made ahead and stored in the fridge for 4 days or frozen for 3 months. When ready to eat, simply add the stock, rice, and beans and simmer as directed.