Recipe: Vietnamese Grilled Pork Sandwich (2024)

Navigation

  • News
    • Latest News
    • Sports
    • Longform
    • Daily Newsletter
    • Weekly Newsletter
    • Restaurant Guide
    • Restaurant Reviews
  • Music
    • Latest Music
    • Concerts
    • Concert Calendar
    • Submit a Music Event
    • Music Newsletter
  • More
    • Things to Do/Tickets
    • Best of Houston
    • Best of Houston Readers' Choice Winners
    • Slideshows
    • Promotions
    • Lists
    • Houston Press Careers
    • Local Advertising
    • Things To Do Newsletter
    • Best Of Newsletter
  • News
  • Latest News
  • Sports
  • Longform
  • Daily Newsletter
  • Weekly Newsletter
  • Restaurant Guide
  • Restaurant Reviews
  • Music
  • Latest Music
  • Concerts
  • Concert Calendar
  • Submit a Music Event
  • Music Newsletter
  • More
  • Things to Do/Tickets
  • Best of Houston
  • Best of Houston Readers' Choice Winners
  • Slideshows
  • Promotions
  • Lists
  • Houston Press Careers
  • Local Advertising
  • Things To Do Newsletter
  • Best Of Newsletter

Support Us

Houston's independent source of
local news and culture

account

  • Welcome,
    Insider
  • Login
  • My Account
  • My Newsletters
  • Contribute
  • Contact Us
  • Sign out

This one's for Eating Our Words commenter Meriwether, who likes to be sopped up with a biscuit. Before any road trip or day trips to Galveston, my family would load up our 40-gallon cooler with dozens of banh mi, which I also call the Vietnamese pacifier. "Banh mi" (pronounced "bahn me") refers to a sandwich that typically consists of a French baguette filled with pickled carrots and daikon, wedges of cucumber, generous sprigs of cilantro, chopped peppers, buttery pate, mayonnaise and some sort of meat. The meat can be cold or hot. Today, we'll make banh mi thit nuong (pronounced "tit noong"). This recipe is courtesy of the Ravenous Couple.

Vietnamese Grilled Pork Sandwich

  • 1 ½ pound pork shoulder, thinly sliced, 1/4 inch or so (too thin and it will dry out when grilled)
  • 1/4 cup minced lemongrass (check the frozen section of your favorite Asian markets)
  • 1/4 cup sugar
  • 2 tablespoons fish sauce
  • 1 tablespoons ground pepper
  • 1-2 cloves garlic, minced
  • 2-3 shallots, minced
  • 3 tbs sesame oil
  • 1 tablespoon thick soy sauce (Unlike regular soy sauce, this has molasses, making it thicker and darker. If not available, use a caramel sauce. Both can be found at your favorite Asian market)
  • 2 loaf of french bread or 6 demi baguettes
  • 1 cucumber, sliced thin
  • 1/2 bunch cilantro
  • Optional chile, thinly sliced
  • Pickled carrots/daikon
  • Homemade pate
  • Homemade mayonnaise

Cut thinly sliced pork into roughly 2-3 inch strips. Again, do not cut it too small, as you do not want it to dry out - or fall through the grilling basket. For best results, grill outdoors using a flexible grilling basket. Of course, you can always use an indoor grill, and that works almost just as well.

For the marinade, combine in large mixing bowl the lemongrass, shallots, garlic, sugar, fish sauce, pepper, dark soy sauce and sesame oil. Add pork and mix well and marinade for at least 1-2 hours or overnight.

Prepare the cucumbers, cilantro, chili, and other condiments. Toasting the baguette is optional. Add the pate and mayonnaise in the baguette.

Grill thit nuong until golden brown and slightly charred on each side. Add to baguette along the condiments.

') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('
').insertAfter(this.paragraphEndNodes[index]); jQuery('
').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('

') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } }

`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['6421064'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['6421064'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['6421064'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`

Insertion point ${index+1}

`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; }

KEEP THE HOUSTON PRESS FREE...Since we started the Houston Press, it has been defined as the free, independent voice of Houston, and we'd like to keep it that way. With local media under siege, it's more important than ever for us to rally support behind funding our local journalism. You can help by participating in our "I Support" program, allowing us to keep offering readers access to our incisive coverage of local news, food and culture with no paywalls.

Make a one-time donation today for as little as $1.

`); setTimeout(() => { (function(e,t){if(t._ym===void 0){t._ym="";var m=e.createElement("script");m.type="text/javascript",m.async=!0,m.src="//static.yieldmo.com/ym.min.js",(e.getElementsByTagName("head")[0]||e.getElementsByTagName("body")[0]).appendChild(m)}else t._ym instanceof String||void 0===t._ym.chkPls||t._ym.chkPls()})(document,window); }, 300); }}, 1000);

Trending Food & Drink

  • Upcoming Houston Food Events: Bourbon, Latin Fare and BBQ with the Bunny
  • Openings and Closings: Itaewon Pocha Debuts, Tsujita Arrives in Houston
  • Top 5 Sodas That Aren't co*ke or Pepsi

Recipe: Vietnamese Grilled Pork Sandwich (2)

Don't Miss Out

SIGN UP for the latestfood & drinknews, free stuff and more!

Join Today

Sign Up

Become a member to support the independent voice of Houstonand help keep the future of the Houston Press FREE

I SupportLearn More

Latest Stories

  • Openings and Closings: Itaewon Pocha Debuts, Tsujita Arrives in Houston

    By Lorretta Ruggiero

  • Houston’s 5 Best Weekend Food Bets: A Boozy Rodeo Brunch and St. Patty's Day Shenanigans

    By Brooke Viggiano

  • Upcoming Houston Food Events: A Tequila Tasting and 57 Years of Texas-Creole

    By Brooke Viggiano

More »

', 'fetching') }, success: function (data) { // console.log(data.result, data.error, data) if (data) { if (data.error) { // presentResult('Trouble loading content.', 'error') } else if (data.result) { presentResult(data.result, 'remove', function () { cmInstance.queue.push(function () { if (typeof apntag === 'object') { apntag.anq.push(function() { if (typeof Foundation.ApnAds.fillAds === 'function') { Foundation.ApnAds.fillAds() } }) } }) cmInstance.queue.push(reflowRightColumnItems) }) } else { // presentResult('How did we get here?', 'error') } } else { // presentResult('No result or error returned from content request.', 'error') } }, complete: function () { fireEvent('foundation:multiitem:itemLoaded', { objId: contentOid }) cmInstance.queue.push(fetchUnloadedItems) }, error: function (error) { // presentResult('Ajax request error.', 'error') } }) } } cmInstance.queue.push(reflowRightColumnItems) cmInstance.queue.push(fetchUnloadedItems) var reflowSensor = new ResizeSensor(cmInstance.items[0], reflowRightColumnItems) jQuery(document).on('scroll resize', function () { // Prevent rapid firing of event stuff clearTimeout(onScrollTimeout) onScrollTimeout = setTimeout(function() { // console.log('Foundation.MultiItem onScroll event') updateFurthestDownInView() }, 100); }) jQuery(document).on('foundation:multiitem:itemchange', function () { // Prevent rapid firing of event stuff clearTimeout(onItemChangeTimeout) onItemChangeTimeout = setTimeout(function() { // console.log('Foundation.MultiItem foundation:multiitem:itemchange event ') cmInstance.onItemChange() }, 100); }) }; Foundation.MultiItems = Foundation.MultiItems || { add: function (multiItem) { Foundation.MultiItems[multiItem.id] = multiItem; } }; Foundation.MultiItems.add(new Foundation.MultiItem({ id: 'ContentRowMultiple', onItemChange: function () { if (this.currentPermaLink) { var state = {} var title = '' var url = this.currentPermaLink history.pushState(state, title, url) } if (this.currentCanonical) { document.querySelector('meta[property*=og\\:url]').href = this.currentCanonical document.querySelector('link[rel*=canonical]').href = this.currentCanonical } if (this.currentThumb) { document.querySelector('link[rel*=image_src]').href = this.currentThumb document.querySelector('meta[name*=thumbnail]').content = this.currentThumb document.querySelector('meta[property*=og\\:image]').content = this.currentThumb document.querySelector('meta[name*=twitter\\:image]').content = this.currentThumb } if (this.currentTitle) { document.querySelector('title').text = this.currentTitle } // Google track pageview if (typeof ga === 'function') { ga('set', 'location', window.location.href) for (let i = 2; i <= 10; i++) { let currentDimension = jQuery(Foundation.MultiItems["ContentRowMultiple"].currentItem).attr('ga-dimension'+i) if (typeof currentDimension === 'string') { ga('set', 'dimension' + i, currentDimension) } else { ga('set', 'dimension' + i, '') } } ga('send', 'pageview') // // Track when scrolling to another item // const multiItemIndex = jQuery(Foundation.MultiItems["ContentRowMultiple"].currentItem).attr('fdn-content-multi-item-index') // if (multiItemIndex.match(/[23456789]/) !== null) { // ga("send", "event", "Article", "ArticleScrolled", multiItemIndex); // /* console.log(`sending ArticleScrolled ${multiItemIndex}`); */ // } } // // Chartbeat track pageview if (typeof pSUPERFLY === 'object') { pSUPERFLY.virtualPage({ sections: jQuery(Foundation.MultiItems["ContentRowMultiple"].currentItem).attr('ga-dimension2') || '', authors: jQuery(Foundation.MultiItems["ContentRowMultiple"].currentItem).attr('ga-dimension6') || '', path: window.location.path, title: Foundation.MultiItems["ContentRowMultiple"].currentTitle || '' }) } } })) // // Track the first item on load. // jQuery(() => { // if (typeof ga === 'function') { // const multiItemIndex = jQuery(Foundation.MultiItems["ContentRowMultiple"].currentItem).attr('fdn-content-multi-item-index') // if (multiItemIndex.match(/\d/) !== null) { // ga("send", "event", "Article", "ArticleScrolled", multiItemIndex) // } // } // }) // if (typeof Foundation.Content !== 'object') { // function throwInExtraInsertions (oid) { var startIndex = 16; var objId = oid; var myBodyElement = jQuery(`[fdn-content-multi-item="${objId}"] .fdn-content-body`); var myParagraphTool = new window.Foundation.ParagraphTool(myBodyElement) // console.log(event, myBodyElement, myParagraphTool); if (typeof apntag === 'object') { apntag.anq.push(function() { // Throw in a placeholder after every 5th usable paragraph ending for (var i = startIndex; i < myParagraphTool.paragraphEndNodes.length; i++) { if (i % 4 === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); let myElement = jQuery('

Recipe: Vietnamese Grilled Pork Sandwich (2024)

References

Top Articles
Latest Posts
Article information

Author: Ouida Strosin DO

Last Updated:

Views: 5892

Rating: 4.6 / 5 (76 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Ouida Strosin DO

Birthday: 1995-04-27

Address: Suite 927 930 Kilback Radial, Candidaville, TN 87795

Phone: +8561498978366

Job: Legacy Manufacturing Specialist

Hobby: Singing, Mountain biking, Water sports, Water sports, Taxidermy, Polo, Pet

Introduction: My name is Ouida Strosin DO, I am a precious, combative, spotless, modern, spotless, beautiful, precious person who loves writing and wants to share my knowledge and understanding with you.