This no-press pan-fried tofu recipe produces evenly crisped tofu full of scrumptious taste. It’s good for busy weeknights or vegan food plan meal prep!

Tofu can create a studying curve for lots of residence cooks. I do know I had some rising pains earlier than embracing it at my home. When you don’t choose the best texture for the best objective, it may be soggy, bland, or perhaps a little bizarre in case you have youngsters at residence. Right here’s what I realized: It’s not within the urgent; it’s within the components! Douse agency tofu in smoky condiments after frying it on the stovetop, and abruptly, it’s a completely totally different dish. My kids at the moment are obsessive about tofu when it’s made like this, a lot in order that it’s grow to be a weeknight win for household dinner. Steal my pan-fried tofu recipe to strive it for your self.
Key Components
Tofu is soy milk that’s became curds (like in cheesemaking!) and pressed into blocks. On Tofu is soy milk that’s became curds (like in cheesemaking!) and pressed into blocks. By itself, it doesn’t have a lot taste. That being stated, when mixed with a number of easy components, tofu might be every kind of savory. Listed here are the components you’ll must make it:
- Agency or additional agency tofu: Keep away from mushy tofu or silken tofu. Agency or additional agency tofu is finest for the frying pan as a result of it holds its form and crisps up properly.
- Toasted sesame oil: You gained’t be frying with this — it’s used as a ending oil because of its low smoke level — however a touch on the finish provides a nutty taste to the tofu.
- Smoked soy sauce: Common soy sauce or tamari is ok, however smoked shoyu is next-level. That’s a soy sauce that’s been smoked over wooden for some added depth.
Season fried tofu nonetheless you want — black pepper, garlic powder, and paprika all work nice — however my favourite means focuses on the smokiness of the oil and soy sauce. I like olive oil finest for frying, however avocado oil is an efficient substitute over canola with a excessive smoke level.

Important Kitchen Tools
A non-stick skillet or well-seasoned forged iron pan is crucial for frying tofu. In any other case, it’ll follow the pan once you flip it. I like chopsticks for simpler flipping as I cook dinner tofu, however you too can use tongs. Simply be sure to have a pleasant sear in your tofu batches earlier than your first flip.
For this dish, you don’t should press the tofu to do away with extra water. When you’ve made stovetop tofu earlier than, you will have wrapped it in a towel earlier than putting a heavy object on prime of it for half-hour. I don’t learn about you, however I don’t all the time have that 30 additional minutes of time to spare! That’s why I like the truth that I can simply dry the tofu off with a towel, and I’m good to go together with this recipe.
Time to Get Cooking
This pan-fried tofu dish leads to golden brown items crisped on the edges. I like utilizing cornstarch or arrowroot in my crispy tofu recipe or when testing out new recipes which can be Thai-inspired, however this recipe has a lighter crunch on the surface that’s nonetheless large on taste.
Listed here are the fundamental steps for how one can make pan-fried tofu:
- Slice the tofu into cubes. Pat it dry with a towel (or paper towel).
- Add olive oil to a non-stick pan or seasoned forged iron skillet, adopted by the tofu cubes in a single layer. Sprinkle with a number of pinches of salt.
- Add medium warmth and cook dinner 5-6 minutes till one aspect is golden brown. Flip utilizing chopsticks or tongs.
- Prepare dinner 5-6 minutes. Take away from the warmth and drizzle with the sesame oil and soy sauce.
- Apply low warmth and cook dinner for two minutes, then flip and cook dinner for an additional 2 minutes till the colour is darkened.



Unlock Subsequent-Degree Taste With Smoked Soy Sauce
Years in the past, my husband, Alex, and I discovered a bottle of smoked soy sauce, or shoyu, at a Japanese restaurant in Santa Fe, New Mexico. I used to be immediately obsessive about the extraordinary, smoky taste, which immediately upgraded vegan recipes within the kitchen.
The excellent news is, shoyu isn’t as laborious to seek out anymore. It’s extra extensively accessible in Asian specialty outlets and on-line to present you that deep, umami-rich taste with a touch of smoke to boost the delicate style of your tofu recipes.
Serving Concepts
Get inventive with this versatile recipe. High your tofu with spicy mayo, peanut sauce, or my favourite Yum Yum sauce, or function it because the protein in your new favourite mains:
- Soba noodles: Persist with the fast and simple model or strive a soba noodle bowl.
- Fried rice: A easy white rice is sweet, too, however fried rice with rice vinegar and miso is one in every of my favourite consolation meals.
- Stir fry: This vegan stir fry makes use of tempeh as the principle protein, however tofu is a simple, scrumptious substitute.
- Roasted greens: Pair tofu with a aspect of roasted veggies for a wholesome, full meal. (Life hack: Drizzle some shoyu in your greens when you’re over there.)
Learn a 5-Star Assessment
“I believe I’ve already posted, however I needed to come again as a result of I make this tofu as soon as per week. That is one of the best tofu I’ve ever had. I believe it’s unimaginable. I’m absolutely addicted. Thanks a lot.”
-Stefany
The Greatest Technique to Retailer
Pan-fried tofu is finest contemporary, but it surely retains for 3-5 days within the fridge in an hermetic container. It would lose crispiness over time and might grow to be denser when frozen. (Frozen tofu works finest when it soaks in a marinade.) Pan-fry, throw it within the air fryer, or bake at 350°F to reheat in case you made a bunch for meal prep.
Pan Fried Tofu
The perfect pan-fried tofu is quick and simple — no urgent required! Observe the steps under for a fast, flavorful addition to your weekly rotation.
- Prep Time: 2 minutes
- Prepare dinner Time: quarter-hour
- Whole Time: 17 minutes
- Yield: 4
- Class: Primary Dish
- Technique: Pan Fried
- Delicacies: Asian
- Weight-reduction plan: Vegan
Components
- 14 ounces agency or additional agency tofu
- 2 tablespoons olive oil
- Kosher salt
- 2 tablespoons toasted sesame oil
- 2 tablespoons smoked soy sauce (Common soy sauce or gluten-free tamari are fantastic, too.)
- For garnish: Toasted sesame seeds and chopped chives
Directions
- Reduce the block of tofu into 1.5 to 2-inch cubes and pat them dry with a towel.
- Add the olive oil to a non-stick pan, adopted by tofu cubes and some pinches of kosher salt.
- Flip the stovetop to medium-high warmth. Prepare dinner 5-6 minutes till evenly browned on the underside.
- Briefly take away tofu from the warmth to scale back spitting. Flip the tofu with chopsticks or tongs.
- Return the warmth to medium-high and cook dinner a further 5-6 minutes till browned.
- Briefly take away from the warmth once more and drizzle with sesame oil and soy sauce.
- Return to low warmth and cook dinner for two minutes, then flip and cook dinner for an additional 2 minutes till the colour is darkened.
- Serve instantly, garnished with chives, scallions, or inexperienced onions. High with sesame seeds if desired.
Notes
Cooking time will depend on the scale and thickness of your tofu items. Typically, it takes 5 minutes per aspect for golden brown and crispy pan-fried tofu. To maintain the tofu from splitting, let it sear undisturbed for a couple of minutes earlier than flipping it the first time.
This pan-fried tofu recipe is vegan and gluten-free. It’s low on carbohydrates, and most of its fats is the wholesome form (monounsaturated fats and polyunsaturated fats). Tofu is a nutrient-dense protein that may safely be consumed a number of instances per week as a aspect dish or an straightforward recipe for busy weeknights.
(perform(){
window.addEventListener( ‘message’, perform( occasion ){
if ( ( ‘https://nutrifox.com’ !== occasion.origin && ‘https://nutrifox.take a look at’ !== occasion.origin ) ||
typeof occasion.information !== ‘string’ ) {
return;
}
var payload = JSON.parse( occasion.information );
change ( payload.occasion ) {
case ‘setHeight’:
var iframe = doc.getElementById( ‘nutrifox-label-‘ + payload.recipeId );
iframe.type.top = payload.top + ‘px’;
break;
}
} );
}());
window.trCommon={“minRating”:6,”ajaxurl”:”https://www.acouplecooks.com/wp-admin/admin-ajax.php”,”ratingNonce”:””,”postId”:63474};
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.smoothScroll = {
init() {
window.addEventListener( ‘click on’, e => {
let anchor = e.goal;
if ( ! anchor.classList.incorporates( ‘tasty-recipes-scrollto’ ) ) {
if ( anchor.tagName === ‘A’ ) {
return;
}
anchor = anchor.closest( ‘a’ );
if ( ! anchor || ! anchor.classList.incorporates( ‘tasty-recipes-scrollto’ ) ) {
return;
}
}
const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}
e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const factor = doc.querySelector( selector );
if ( ! factor ) {
return;
}
factor.scrollIntoView( { conduct: ‘clean’ } );
historical past.pushState( {}, ”, selector );
}
};
(perform( callback ) {
if ( doc.readyState !== ‘loading’ ) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.smoothScroll.init();
});
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}
const cookModes = doc.querySelectorAll(this.cookModeSelector);
if (cookModes.size > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘enter[type=”checkbox”]’).addEventListener(“change”, occasion => {
this.checkboxChange(occasion.goal);
}, false);
} else {
cookMode.type.show = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = doc.querySelectorAll(this.cookModeSelector + ‘ enter[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
strive {
this.wakeLock = await this.wakeLockApi.request(“display”);
this.wakeLock.addEventListener(“launch”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.launch();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};
(perform(callback) {
if (doc.readyState !== “loading”) {
callback();
} else {
doc.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.staticTooltip = {
factor: null,
tooltipElement: null,
deleting: false,
init( factor ) {
if ( this.deleting ) {
return;
}
this.factor = factor;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}
this.deleting = true;
this.tooltipElement.classList.take away( ‘opened’ );
setTimeout( () => {
this.tooltipElement.take away();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = doc.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );
const currentTooltipElement = doc.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
doc.physique.replaceChild( tooltipElement, currentTooltipElement );
} else {
doc.physique.appendChild( tooltipElement );
}
this.tooltipElement = doc.getElementById( ‘tasty-recipes-tooltip’ );
},
present() {
if ( ! this.tooltipElement ) {
return;
}
const tooltipTop = this.factor.getBoundingClientRect().prime
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().top;
const tooltipLeft = this.factor.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.factor.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );
this.tooltipElement.setAttribute( ‘type’, ‘prime:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );
},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.take away( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};
window.TastyRecipes.ajax = {
sendPostRequest( url, information, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.ship( this.preparePostData( information ) );
xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.standing === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}
failure( xhr );
};
xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( information ) {
const formData = new FormData();
for ( const key in information ) {
formData.append( key, information[key] );
}
return formData;
},
};
window.TastyRecipes.scores = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;
this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const scores = doc.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( scores.size {
occasion.preventDefault();
this.defaultRating = occasion.goal.closest( ‘.checked’ ).dataset.score;
this.setCheckedStar( occasion.goal );
this.maybeSendRating( this.defaultRating, occasion.goal );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click on’, e => {
// Bailout (do not take away the tooltip) when the clicked factor is a score star, or it is the tooltip itself.
if ( e.goal.closest( ‘.tasty-recipes-rating’ ) || e.goal.classList.incorporates( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}
window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( score ) {
const ratingInput = doc.querySelector( ‘#reply .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click on();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = doc.querySelectorAll( ‘enter.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click on’, currentEvent => {
const selectedRating = currentEvent.goal.getAttribute( ‘worth’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( score ) {
if ( score < this.minRating ) {
doc.physique.classList.take away( 'tasty-recipes-selected-minimum-rating' );
return;
}
doc.physique.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( score ) {
const commentTextarea = doc.getElementById( 'remark' );
if ( ! commentTextarea ) {
return;
}
if ( score {
window.TastyRecipes.staticTooltip.changeMessage( response.information.message );
window.TastyRecipes.staticTooltip.present();
this.updateAverageText( response.information, recipeCardElement );
this.maybeFillCommentForm( response.information );
// Disguise the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.information, score );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( information, recipeCardElement ) {
if ( ! information.common ) {
return;
}
this.setRatingPercent( information );
if ( ! information.depend ) {
return;
}
const quickLink = doc.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, information );
this.setPartialStar( quickLink );
}
const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = information.common;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), information );
},
setTextInContainer( container, information ) {
if ( ! container ) {
return;
}
if ( information.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = information.label;
}
return;
}
const averageElement = container.querySelector( ‘.common’ );
if ( averageElement ) {
averageElement.textContent = information.common;
}
const countElement = container.querySelector( ‘.depend’ );
if ( countElement ) {
countElement.textContent = information.depend;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( information ) {
this.defaultRating = information.common.toFixed( 1 );
const components = information.common.toFixed( 2 ).toString().break up( ‘.’ );
this.currentRatingPercentage = components[1] ? components[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( goal ) {
const cardRatingContainer = goal.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}
const thisStar = goal.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( information ) {
if ( ! information.remark || ! information.remark.content material ) {
return;
}
const commentForm = doc.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}
const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.worth ) {
return;
}
// Add remark particulars for modifying.
commentBox.innerHTML = information.remark.content material;
if ( information.remark.title ) {
commentForm.querySelector( ‘[name=author]’ ).worth = information.remark.title;
commentForm.querySelector( ‘[name=email]’ ).worth = information.remark.e mail;
}
},
maybeResetTooltip( recipeCardElement, information, score ) {
if ( this.savingRating === score ) {
this.resetTooltip( recipeCardElement, information );
}
},
resetTooltip( recipeCardElement, information ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;
// Reset the default score.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( information && information.common ) ? information.common.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;
this.resetSelectedStar( cardRatingContainer, information );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}
const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = doc.querySelector( ‘#reply .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.show.contains( ‘flex’ ) ) {
ratingsButtons.type.course = ‘rtl’;
}
if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Choose the score that was beforehand chosen in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}
const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click on’, occasion => {
if ( ratingSpan === occasion.goal ) {
return;
}
ratingSpan.previousElementSibling.click on();
} );
}
}
};
(perform(callback) {
if (doc.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.scores.init( window.trCommon ? window.trCommon.minRating : 4 );
});