ADVERTISEMENT

Three Dots connects neatly in Greenhills

Good food, fair pricing and an easygoing room make this restobar worth the elevator ride

Published Nov 26, 2025 08:13 am
EVENING SETTLE Interiors at Three Dots, dim-lit and warm in tone, a space made for unhurried nights where conversation lingers with the second round.
EVENING SETTLE Interiors at Three Dots, dim-lit and warm in tone, a space made for unhurried nights where conversation lingers with the second round.
In a city long shaped by neighborhood favorites and family-run kitchens, Three Dots arrives in Greenhills with a confidence that doesn’t need to announce itself. The restobar, tucked on the sixth floor of the San Juan shopping center, opens to a warm room of wood, concrete and slow-blooming light. It feels like a hideout above the traffic where dinner turns into conversation and long fun nights with friends.
Three Dots keeps its pitch straightforward: a comfortable dining room, cocktails that respect the craft, and dishes that lean on memory, travel, and what simply tastes good. Prices stay within reach — a welcome detail in San Juan, where diners appreciate a spot that feels elevated yet unpretentious.
The menu is compact but deliberate. The Tuna Tataki is an early indication of the kitchen’s steady hand. Lightly seared slices arrive dressed in homemade ponzu and a touch of spicy mayo, finished with a crisp miso-sesame tuile. It’s bright, clean and balanced.
TRIPLE SIP Three cocktails from the Trilogy menu, each with its own character, from sharp and herbal to sweet and smoky, lined up for a night that moves in three steady acts.
TRIPLE SIP Three cocktails from the Trilogy menu, each with its own character, from sharp and herbal to sweet and smoky, lined up for a night that moves in three steady acts.
From there, the comfort dishes take their turn. Truffle fries come out hot and fragrant, generous enough to share but easy enough to finish on your own. The ricotta dip, tinged with chili and paired with crisp bread, delivers a mild heat that lingers without overwhelming. Both plates prove that small dishes, priced fairly, can set the tone for a relaxed night.
For something heartier, the kitchen leans into family and travel inspirations. The brown butter chicken, drawn from an old household recipe, is rich without being heavy. The pork and basil rice bowl is savory and satisfying, a nod to Southeast Asian comfort food and late-night meals abroad. And when the mood calls for seafood, the pompano served with a smooth laksa sauce and fried vermicelli brings warmth and depth.
Drinks follow a structured menu called Trilogy, split into three acts. Each act offers cocktails with distinct personalities, from herbal to creamy to smoky. The herb-forward Forage, made with capsicum-infused gin, Wheatley vodka and a hit of pickle brine, lands sharp and clean. Prosperity, a rum-based mix sweetened with pandan and yema orgeat, leans playful. Meanwhile, Cinder, a bourbon drink touched with cherrywood smoke and cinnamon, settles the night with a quiet burn. With prices hovering around the mid-range, they meet the room exactly where it stands: attentive, but never fussy.
SOFT HEAT Brown Butter Chicken — tender, mildly nutty and rounded with the richness of browned butter
SOFT HEAT Brown Butter Chicken — tender, mildly nutty and rounded with the richness of browned butter
SPICE TWIST The Spicy Chorizo Pasta — hearty, savory and made for those who like their comfort with heat.
SPICE TWIST The Spicy Chorizo Pasta — hearty, savory and made for those who like their comfort with heat.
What anchors Three Dots is how everything fits together — the calm of the dining room, the straightforward pricing, the well-made drinks and a menu that respects flavor more than flash. It’s the rare new opening that understands San Juan well enough to blend in and stand out at the same time.
For diners seeking a place that feels modern but not intimidating, polished without being precious, Three Dots makes a strong case. Come for the Tuna Tataki, stay for the pork and basil rice bowl, and linger for a cocktail or two as the evening unravels. Here, on a quiet floor above Greenhills, good food and good company find their corner. 
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.