ByAdam Platt,
a features writer at New Yorkwho served for many years as the magazine’s critic
Atla’s guacamole–goat cheese toast.
Photo: Melissa Hom
For whatever reason, the annual, onerous critic’s chore of putting together a ‘best new restaurant’ list has been even more onerous than usual this year. Possibly it’s because many of our favorite restaurants (like Ignacio Mattos’s Flora Bar) opened late in 2016, and were hastily included in last year’s list. Possibly it’s because the issues which continue to make New York an increasingly challenging restaurant town (the rents, the rising prices, the increasingly yawning gap between the haves and the have nots) haven’t gotten much better, or that the scandal-ridden events of 2017 have made it a year that many of us would rather forget. Although the actual ranking of these ten worthy establishments is a serendipitous process subject to all sorts of changeable factors — including what time of day you visit, what kind of food you happen to enjoy, and how much you’re willing to pay — the main criteria is the same as always. These are the ten restaurants to which we’d most like to return, even (God forbid) if we were dining on our own dime.
The Absolute Best
1. Atla 372 Lafayette St., at Great Jones St.; no phone
In a star-crossed, increasingly stratified year for the restaurant business, with few obvious breakout hits, Enrique Olvera’s all-day coffee, breakfast, lunch, and dinner destination succeeds, as my Underground Gourmet colleagues point out, in checking more boxes than anyone else. The clean, post-gourmet room may not have the sizzle of Olvera’s great flagship, Cosme, but beginning at 9 a.m., when the first steamy cup of café con leche, or perfectly scrambled platter of eggs “à la Mexicana” is served, there’s something on executive chef Daniela Soto-Innes’s carefully crafted, refreshingly priced menu for everyone. Go at breakfast for aguas frescas and bowls of cool coconut yogurt topped with blueberries, stay for the lunchtime chicken enchiladas, and then, after a brief, restorative nap, return for your mezcal-fueled dinner, which — in spirit, execution, and price — combines the economy and comfort of first-class Mexican home cooking with the elevated technique of a gourmet kitchen.
On the one hand, Mario Carbone and his cohorts at the Major Food Group deserve all of the credit for their tasteful makeover of Philip Johnson’s venerable space, and for introducing a new, more populist audience to the joys of gilded, mid-20th-century fat-cat dining. On the other hand, the room, especially at dinnertime, can resemble a scene straight out of the hedge-fund fantasy Billions, and if you wish to dine like a New Age robber baron on roast duck and great haunches of beef, the extravagant price to entry is predictably nuts. So go at lunchtime, the way Mr. Johnson and his friends at the old Four Seasons Grill Room used to do, when the staff (and kitchen) feels less stressed, the careening food-trolley traffic slows to a dignified crawl, and it’s possible to enjoy what is still the greatest of all dining spaces in this great dining city without breaking the bank.
3. Cote 16 W. 22nd St., nr. Fifth Ave.; 212-401-7986
Simon Kim’s ingeniously simple idea was to combine the high-roller qualities of a grade-A American steakhouse with the rough-and-tumble comforts of classic Korean barbecue, and it works so well, you wonder why no one ever thought of it before. The key is the execution — from chef David Shim’s classic Korean specialties (the egg soufflé, the cold “Somyun” noodles in summertime, the housemade kimchee and sauces), to the well-mixed soju cocktails and extravagantly well-chosen wine list, to the beef itself, which is smartly advertised on the menu, and aged more or less to perfection in the large meat locker downstairs. The result is a stylish hybrid of both famous, slightly clichéd genres, which feels less like a gimmicky exploitation of one, or the other, than a weirdly satisfying improvement on both.
We’re as weary as the next expense-account warrior of preciously overpriced omakase dinners, but we’ll make an exception for William Chen’s improbably polished little operation, especially since it’s only a block from the office. There’s a modest à la carte selection on the menu, and the set-course options range from comforting Japanese classics like grilled eel over rice served at lunchtime, with all the usual trimmings, in a lacquer box, to the elaborate multicourse, multi-hour uni, sushi, and Kobe-beef omakase experience, which is presented only at the small four-seat bar, and prepared, like everything in the restaurant, by the chef himself. The combination of top-notch ingredients, focused classical technique, and homespun simplicity makes it feel like the kind of anonymous, unexpected place you’d stumble onto while wandering down one of the more stylish culinary backstreets of Tokyo.
5. Hanoi House 119 St. Marks Pl., nr. Ave. A; 212-995-5010
What David Chang did for ramen noodles, and the Torrisi boys did for their beloved chicken parm, Vietnamese-American chef John Nguyen does for that great Vietnamese delicacy, pho. The broth takes 16 hours to simmer before it’s served at this boisterous, satisfying East Village restaurant, and unlike at your average Vietnamese joint, the tender strips of beef floating among the rice noodles and wavy bits of greenery are tender, grade-A ribbons of filet mignon and brisket. Like Chang and the generation of cooks he’s influenced, Nguyen has a gift for imbuing these comfort dishes of his youth with the finest ingredients, along with first-class cooking technique, so after you’ve polished off your pho, be sure to leave room for the shaking beef, and the superior Southeast Asian chè dessert, all of which are worth a special trip.
6. Empellón 510 Madison Ave., entrance on 53rd St.; 212-367-0999
After honing his unique elevated-comfort-food formula downtown, the hypertalented Alex Stupak finally gives midtown the taco joint it deserves. Dishes like nachos (with crab and uni) and guacamole (with seven salsa options) are perfectly calibrated for this new uptown audience, and although the signature taco options have their charms, many of the elaborate entrées work just as well with a stack of steamy, fresh corn tortillas on the side. The real specialties of the house, however, are Stupak’s desserts, in particular the elaborate tastings of seasonal fruit over ice, and the uncannily realistic avocado parfait, which is one of those rare made-for-Instagram dishes that actually lives up to the hype.
7. abcV 38 E. 19th St., nr. Broadway; 212-475-5829
Yes, the pale, cleanly antiseptic décor can look a little too much — on bright, hungover mornings — like the cafeteria of a high-priced rehab facility, and if you happen to be a grumpy old carnivore, everybody in the room seems to look a little happier and healthier than you. But it’s hard to argue with the range, inventive quality, or the execution of Jean-Georges Vongerichten’s meatless, veggie-saturated culinary vision, which includes an edifying selection of salads, protein shakes, fruit bowls, and legumes; all sorts of artful (and surprisingly filling) rice and noodle options; and what is arguably the finest breakfast service in this breakfast-mad town.
8. Ugly Baby 407 Smith St., nr. 4th St., Carroll Gardens; 347-689-3075
In a year of high-profile comebacks, makeovers, and revivals in restaurant-land, Sirichai Sreparplarn’s return to New York might be the most momentous of all, especially for those addicted to authentically fiery Thai cooking. Sreparplarn made his reputation as the co-chef at the much-praised, now-shuttered Kao Soy, in Red Hook, but with the opening of this brightly colored, deceptively casual railcar-size establishment in Carroll Gardens, he finally has a kitchen to call his own. The Red Hook restaurant specialized in northern Thai food, but the lively, vivid recipes here are drawn from all over Thailand’s diverse culinary landscape, with ingredients to match, like jackfruit, crispy pig’s ears, and on very special occasions, well-simmered duck feet.
9. Chez Ma Tante 90 Calyer St., at Franklin St., Greenpoint; 718-389-3606
In the annual, highly contested pound-for-pound best-new-restaurant-in-town competition, Aidan O’Neal and Jake Leiber’s pint-size Greenpoint bistro might just get our vote. Everything we’ve tasted on the small, neighborly, exceptionally well-executed menu punches well above its fighting weight, especially those great Montreal-style nose-to-tail offal specialties, like pig’s-head terrine and the smooth, faintly boozy chicken-liver pâté. If you’re a breakfast fanatic, the perfectly pitched, lumberjack-size stack of brunch-only flapjacks is worth a special pilgrimage.
10. Guan Fu Sichuan 39-16 Prince St., Ste. G01, Flushing; 347-610-6999
The city is in the midst of a great Chinese-restaurant renaissance, fueled, like the last great Chinese-food renaissance of the 1960s, by a new generation of chefs and restaurateurs from the homeland. This ambitious little Flushing establishment is the brainchild of two former New York–area graduate students from China, and many of the dishes on their glossy, impressively photographed menu (crocks of velvet-textured mapo tofu and dan dan noodles, twice-cooked pork smothered in fresh leeks, a deliciously subtle kung pao chicken tossed with fermented bits of soybean) taste about as different from the stolid ye olde warhorse carryout variety as a “New York style” pastrami sandwich on the streets of Chengdu.
*A version of this article appears in the January 8, 2018, issue of New York Magazine.
`;
// 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();
// ]]