The Absolute Best Restaurants in Dumbo and Vinegar Hill
ByAlyssa Shelasky,
Cut columnist and editor of the “Sex Diaries” column since 2014.She is also the author of the essay collection 'This Might Be Too Personal' and the memoir 'Apron Anxiety.'
Celestine and the city.
Photo: Scott Heins
Dumbo stands for Down Under the Manhattan Bridge Overpass, but that acronym sells the prime-Brooklyn-waterfront area short. The Belgian-blocked, post-industrial territory actually cuts a larger swath, extending from Fulton Ferry Landing on the southern border, to the adjacent micro-nabe of Vinegar Hill to the north (and for the food-finding purposes of this list, we’re including Vinegar Hill’s top contenders). Few neighborhoods in contemporary New York have seen such rapid development as this one, which was virtually manufactured from scratch over the course of two or three decades by the Walentas family, a clan whose foresight led them to seed the then-desolate artists’ colony with traffic-generating cultural organizations and culinary attractions, like a chocolate factory from a former Le Cirque pastry chef. Today, Dumbo’s a hub of luxury apartments, retail stores, tech businesses, coastal parkland, and, yes, places to eat, catering to both newly arrived locals and hordes of weekend tourists. Here, the absolute best places to eat in Dumbo and Vinegar Hill.
The Absolute Best
1.Celestine 1 John St., nr. Pearl St.; 718-522-5356
Celestine is that rare thing — a delicious, sophisticated restaurant with a heart-stopping view of the Manhattan skyline across the glittering East River. A collaboration among partners whose other independent ventures include Brooklyn hot spots like Rucola, Grand Army, and Fausto, the place is upscale but thoroughly unpretentious, with the décor suitably restrained in order to direct all attention to what’s beyond the floor-to-ceiling windows. Well, almost all: The menu is equally compelling, offering appealing riffs on Mediterranean, North African, and Middle Eastern dishes, and similarly seasoned cocktails, like a turmeric gin and tonic. The short rib manti make a delectable dumpling appetizer, and the branzino is as fresh and well-cooked as you always hope the ubiquitous fish will be, though it seldom is. Frankly, though, even the simplest combination of house-made za’atar flatbread, a leafy green salad with pumpkin seeds and kasseri cheese, and a glass of Spanish red is all you really need for an incredible meal.
Vinegar Hill House has been tucked away in the quirky, quiet, Dumbo-adjacent nook that is Vinegar Hill since 2008, and for nearly that long, it has been the most wonderful restaurant around. The cocktails are bespoke Manhattan and Negroni-types, always handsome and artful. Dinners usually include the juiciest pork chop or a hearty homemade pasta with kill-me-now ragù. Brunch is greasy enough to cure a hangover — those home fries, a.k.a. “wood-fired potatoes”! VHH would be #1 if there wasn’t a nagging sense that the food is somehow a little too serious and the ambience a bit too intense for what purports to be a casual neighborhood spot. Despite appearances, it’s not the kind of place you feel able tojust swing by. That said, the food is consistently great, especially the dramatically two-toned signature dessert, a pitch-black chocolate Guinness cake with a stark white cream-cheese frosting. It’s the classiest cake to completely inhale.
3. Cecconi’s 55 Water St., nr. Main St.; 715-650-3900
Photo: Scott Heins
Cecconi’s eggplant parm is easily the crispiest, cheesiest one around, but it’s actually their drama-meets-comfort recipe that makes the big, waterfront restaurant inside the redeveloped Empire Stores a new favorite. Whether you’re sitting outdoors overlooking the water, or curled up on a plush turquoise chair with a close friend, or chasing a toddler around a big, round table, it is always a pleasure to be at the clubby Cecconi’s — a spin-off of the posh, Soho House-affiliated Dumbo House upstairs. With the private-club connection, you might assume Cecconi’s to be pretentious, but it’s not: The crowd’s a healthy mix of locals eating wood-fired pizza, well-dressed creatives having post-work Aperol spritzes and shared burrata plates, and tourists smitten with the city, happily refueling on big plates of brick chicken or branzino. The pizza oven produces an excellent wild-mushroom pie and the cavatelli with lamb ragù is refined comfort food at its finest.
Dumbo doesn’t lack for the casual breed of bakeries-slash-cafés, mostly takeout but with a couple of tables, and that’s probably because the area begs for a quick bite to eat before or after all the waterfront exploration. Butler, an outpost of a Williamsburg location also led by pastry chef Ryan Butler, is the best of that genre. The breakfast sandwich is easily the finest in the area, thanks in part to its house-made potato-and-scallion brioche. Even better than that are the mouthwatering breakfast empanadas made with scrambled eggs, smoked bacon, arugula, Cheddar cheese, and the genius addition of dukkah, a nutty, seedy Egyptian spice. The coffee is Intelligentsia and extra good. And the tables are lovely and casual — nice enough to take a meeting, chill enough to sit with a laptop.
5.Almondine 85 Water St., nr. Main St.; 718-797-5026
Photo: Dave Ratzlow
Ask anybody in the know about Almondine and they’ll either mention the moody French owner or the magnificent croissants. In fact, the two go hand-in-hand. The pastries here are sublime, as are the generally vegetarian soups and large sandwiches, like the chicken pesto and of course the croque monsieur. The fresh baguettes are the biggest score in Dumbo and the croissants, again, easily vie for the title of the city’s best. The tiny sit-down café, French attitude included, is as European as they come. Also, Almondine was almost destroyed in Hurricane Sandy and managed to rebuild itself against all odds — for that, and for the pain au chocolat, it will forever be a Dumbo treasure.
6. Smile to Go 49 Water St., at Old Dock St.; 917-909-0200
Photo: Melissa Hom
The Brooklyn outpost of the Manhattan takeout-shop chainlet would rank higher if it weren’t shoved in the back of a random Shinola store, with no windows, and sheltered from Dumbo’s defining views. That said, the food is consistently fabulous, especially the rotisserie chicken and potatoes and the manouri-cheese-and-pear sandwich, which comes slicked with truffle oil and fig jam. Best of all is a phenomenal breakfast burrito that fussy Dumbo families line up for every weekend without flinching at the $9 price tag. Because of the uninspiring location, take the words “to-go” literally — the waterfront is only steps away.
A super-simple, very fresh, quick-serve taqueria, this tiny corner shop has a tortilleria making homemade tortillas, two vertical roasting spits, and not much else. You can convert your taco into a burrito or a salad bowl, which might sound like bandwagon-jumping, but thanks to the textural contrast of ingredients like pumpkin seeds with queso and cream, is actually quite crave-able. There’s a few sides of the chips-and-salsa variety, a couple of cold beverage options, and a few seats in the window at this grab-and-go find.
8. Juliana’s 19 Old Fulton St., nr. Front St.; 718-596-6700
Photo: Dominic Perri/Dominic Perri
Juliana’s plays into Dumbo’s historical pizza wars in a way that is by now boring to rehash, but, long story short, the owner is Patsy Grimaldi, who can trace his pizza bona fides back to the original Lombardi’s and has been slinging pies at this location on and off since 1990. Juliana’s beats its famous neighbor Grimaldi’s (the business Patsy sold years ago) not just in quality but in its slightly less touristy nature. The thin-crust pies are exceptional, especially with arugula and pepperoni, and the mystique of the original hand-built, blazingly hot hearth — the first coal-fired oven commissioned in New York in over 50 years — only adds to the wow. Also, they do take-out, which Grimaldi’s does not.
9. Foragers 56 Adams St., at Front St.; 718-801-8400
One of the best roast chickens in Brooklyn. That’s why Foragers, the aggressively artisanal and enviable market of Dumbo, landed here. Get it to go or eat it on the long, narrow table along the front windows. Also, the most indulgent warm blueberry biscuits ever, a pretty great salad bar, and easy access to Four & Twenty Blackbirds pie by the slice. The rest of Foragers functions as a very expensive, highly curated organic grocery store — which is great for picking up snobby cheeses or Mast Brothers chocolate, but again, the roast chicken.
10. Cafe Gitane 70 Hudson Ave., at Water St.; no phone
This little whimsy of a space in Vinegar Hill, with its unpredictable opening hours andBYOB status, hardly has the buzz of its eternally hip Nolita counterpart, but the new location sure pulls off understated charm, with reliably good food to boot. The couscous and other Moroccan-inflected fare, like the spicy meatballs, are good, not great, but none of that really matters because it’s a special spot with a lovely staff. Next to the often overrun chaos of Dumbo, the café’s quiet, indie spirit comes as sweet relief.
A Brooklyn Heights institution since 1949, this prepared-foods and catering haven just opened a satellite in Dumbo, this time with table seating and craft beer, two big additions for the family-owned company. What’s more, their to-go cold tortellini pesto pasta and customized sandwiches, like a smoked turkey with Brie, are better than ever. Since Dumbo has so many outdoor events, from opera in the park to New York’s Festival of Lights, this is probably the best place for pick-ups and picnic fare. Their cakes by the slice — red velvet and cheesecake — are especially terrific, even if you just want to go home, avoid the crowd, and hide.
Jacques Torres took a chance on Dumbo way back in 2000, and for that reason, and for his milk-chocolate bark, chocolate-chip cookies, and pistachio-marzipan bonbons, he’ll never be too commercial for the true Dumbo heart, even with his seven NYC locations. This is where it all started, where the onetime Le Cirque pastry chef opened a chocolate factory on an off-the-beaten-path street nobody had ever heard of. Until they did, largely because of him.
With locations in Miami and Las Vegas, you might assume this sushi-spot-meets-tiki-bar to be a super-cheesy restaurant. And you might be a little bit right. But with its Dumbo location, right behind Brooklyn Bridge Park’s famous Jane’s Carousel and only a minute’s walk from the water, it’s worth getting over yourself and enjoying the place. Especially because of its kickass cocktails, which pair beautifully with the intoxicating views. In terms of real estate, Sugarcane has the money spot. In terms of food and drink, the specialty sushi rolls are tasty if a little too Vegas-y, and the frogronis (frozen Negronis) are so, so, so much better than their god-awful name.
14. The River Café 1 Water St., at Old Fulton St.; 718-522-520
Walking into this old-school Dumbo waterfront institution can give even the most jaded New Yorker, as J.Lo would say, “the goosies.” All the tingles stop, however, once you’ve entered the building and encountered the cross staff, whose strict rules (no kids at the bar, no walk-ins at dinner, jackets only) feel dated, if not insulting — irrationally so or not. If you’re lucky enough to make it inside, the very fancy, very pricey, “Special Occasion” restaurant is indeed delicious and the waterfront setting is powerful — you feel like you’re floating. The salmon with lemon, jasmine rice, and a shiitake-miso consommé is equally light and decadent. The ricotta gnocchi will forever ruin all other gnocchi for you. The River Café is not a reflection of how New Yorkers like to dine today, especially with that front of house ‘tude, but the tourists sure eat it up.
`;
// 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(4),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(135),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,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),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(406),_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,"406":406,"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","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.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();
// ]]