ByJoshua David Stein,
a cookbook author, critic, and journalist.Despite what his kids say, he's not a boomer.
The pita-wrapped cornucopia at Falafel Tanami.
Photo: Melissa Hom
Falafel varies as much from Cairo’s streets to Beirut’s squares as do the local dialects. Here, those regional variations are kept intact. Many of the best — but not all — falafels in the city are endemic to their immigrant neighborhoods. So the Lebanese, Syrians, and Turks of Bay Ridge are well served, as are the Cairenes and Maghrebians in Astoria and the Israelis of Midwood.
The Absolute Best
1. Falafel Tanami 1305 E. 17th St., nr. Ave. M, Midwood; 718-483-9100
Falafel Tanami is itself not much larger than a pita pocket. There’s but one table and a few stools. The Rebbe Schneerson stares puckishly out from a photo on the wall and a poster-size print of Rabbi Moshe Tanami, a relative of the owner, Baruch Tanami, hangs behind the counter. In the narrow space between that wall and the toppings bar stands Galit Tanami, who has been making falafel for the last 18 years, 15 in the Tel Aviv and three in Flatbush. (Her husband is the owner.) Everything is made fresh: the herb-laced falafel from ground chickpeas soaking in the sink; the infernal harissa; the laffa pita, so fluffy it could be a celebrity profile, golden chunks of fried eggplant, crisp fluorescent pickles. With Israeli pop blaring on the television and Israeli pop chilling in the cooler – try the Nesher Malt – it’s like a field trip to a promised land where the raw garlic is minced fresh, the tahini’s soothing, the falafel’s divine, and half a pita – more than enough for lunch – costs $4. Baruch Hashem.
There are yarmulkes. There are wigs. There’s a cell-phone case that reads, “Thank You, Hashem.” The hours are hermetic – four hours on six nights a week – the house music will turn your ears into medicinal jelly, and the prices are extravagant. But hot damn if chef Elior Balbul’s “deconstructed falafel” isn’t worth all $21. At its heart are quenelles of blanched fava bean, seasoned with cumin, lemon juice, and salt and pepper, sprinkled with a crispy chickpeas-and-panko crumble, resting on a bed of white tahini, enlivened by rosy sumac onions and micro-cilantro, crisscrossed with amba and wing-manned by fluffy pita.
The yeasty scent of pita baking in the pizza oven is strong. The service is gruff, waiters beefy, and the Turkish pop songs loud and melodious. All augur well for Hazar’s falafel. When it arrives, nestled in a fresh pita so stuffed with salad and marinated red cabbage it looks like a tin-foil-wrapped cornucopia, the falafel doesn’t disappoint. The crunchy carapace is unusually swarthy, but the bright-green chickpea within is surprisingly moist. Mint, celery, and parsley stud the dough, which has a fresh herbal bounce. A hidden application of tahini and hummus on the pita’s inside wall adds moisture, and a small glass of very sweet tea serves as the ideal traditional end.
The magic of the falafel plate at this small, bizarre, and winning restaurant in Astoria is twofold. First is the ball itself, made Egyptian style, which is to say with fava rather than chickpeas. They are small and weirdly shaped, fried on a hot plate, and burst lightly after an initial crunch. The second is that chef Ali El Sayed produces them at all. One hardly notices his mise en place — the flash-frying of herbs; the cutting of pears, which accompany the platter; the scooping of his herb-studded fava dough — amid the décor and his declamations.
A nod to his beginning as a food-truck savant, Fares Zeideia has installed a faux truck grill at his Astoria storefront. Inside, the colors are bright red, green, and black, in honor, perhaps, of his homeland of Palestine. Near the window, two shawarmas rotate on their spits, and a deep-fryer crackles like a radio on the fritz. Zeideia’s falafel are cylindrical like deep-fried pucks, and the herbs inside — coriander, parsley, anise, and a few other nominally secret ones — bring a freshness to the chickpea. This serves as the base note for a complex harmony of vinegary pickles, pickled turnips, hot sauce, tahini, and sumac.
6. Zooba 100 Kenmare St., at Cleveland Pl.; 646-328-9144
“This is not falafel!” reads a bright wheat-pasted poster at Zooba, the Cairene street-food chain that opened in Soho in September. It is instead Egyptian ta’ameyah, fried pucks made with fava bean, not chickpeas. But the grilled whole-wheat pita, more properly called baladi, that these coriander-studded quenelles call home is falafelian and damn good regardless. Especially alluring are the condiments, which range from an Instagram-friendly hibiscus-beetroot to a zingy pickled-lemon tahina. Street food rarely makes the transition to bricks and mortar unscathed, especially across oceans, but Zooba is the happy exception.
7. Zyara 57 Clinton St., nr. Rivington St.; 646-586-3317
Photo: Melissa Hom
When, during the construction of the falafel pita, the constructor takes the extra time to compress the already packed ingredients in order to better stuff in more, it bodes well for dinner. Here, the Jordanian owner Khaleel Salman, who comes from a family of falafel-makers in Amman, takes that extra step to shmush, but he takes others as well. The flair, for example, with which he flicks the silver foil shut around the engorged pita, is like to-go origami. The falafel itself is like a little ball of lava, steam escaping from the solid crust. It comes with fattoush so fresh it seems tumbled from the greengrocers and neon-green pickled peppers in thin arabesques that resemble a Kehinde Wiley background.
8. Bustan 487 Amsterdam Ave., nr. 84th St.; 212-595-5050
No color is neutral, no textile unpatterned and no chickpea gone to waste at this bougie Upper West Side standby. But the falafels, small shorn Kooshes, are just one of the outstanding aspects of the platter. Even more impressive is the pita, which emerges from the taboon, a clay Old Testament pizza oven, just moments before it is stuffed with falafel, zhoug, amba and all the other accoutrements.
9. Benno 7 E. 27th St., nr. Fifth Ave.; 212-451-9557
Falafel might seem a strange bedfellow for the coddled eggs and sturgeon caviar at Jonathan Benno’s paean to all things European, but don’t forget that Benno worked with Eli Kamieh, the chef de cuisine of Per Se and the son of Syrian immigrants, for years. And it was Kamieh who indoctrinated Benno in the ways of falafel. The student made good with this fava-and-chickpea version, accompanied with hummus and topped somewhat unconventionally with raita, which in some ways is the Indian version of tahini.
10. 19 Cleveland 19 Cleveland Pl., nr. Kenmare St.; 646-823-9227
One can tell from the ear-splitting volume of the Madonna and vaguely cheesy décor — a neon light reads simply “Feelings” — one is in a Tel Avivian restaurant. The falafels here, a sister restaurant to Nish Nush, a Tribeca mainstay — come on a platter, pita adjacent. There are three different types: a harissa-studded red one, a parsley-painted green one, and a VSCO-wearing basic one. All are small and crisp with a good crust, yielding open with the slightest bit of pressure to reveal their tender viscera. As consort, a swirl of hummus, mounds of shredded cabbage, and a crispy disc of fried eggplant.
11. Rainbow Falafel 26 E. 17th St., nr. Union Sq. W.; 212-691-8641
Emerald-green floor. Roman arch. Absolutely no seats. A functional falafel whose eaters must carry their precious pita’d cargo to Union Square or points unknown, to sit on the stairs and marvel at the Jamal family’s secret spice recipes that turn these small chickpea balls into orbs of flavor, bursting through the hot sauce and penetrating the tahini like headlights through the gloaming leading the way home, or at least somewhere over the rainbow.
Well before she presided over a Mediterranean empire including Balaboosta and Bar Bolonat, Einat Admony built her bona fides on the extremely fresh and incredibly good falafel at Taïm. Two flavors — an herbaceous green and a now much imitated spicy harissa — fried to order, made daily, stuffed like clowns in a car or commuters on the C train into a whole-wheat pita. Tahini. Israeli salad. Admony’s cilantro-y zhoug. Amba. This isn’t revolutionary stuff — more Biden than Bernie — but it’s best in class.
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(3),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(136),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"3":3,"12":12,"124":124,"136":136}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(408),Fingerprint2=require(407),DS=require(406),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]