ADVERTISEMENT

'I'mPerfect' makes history, Vice Ganda wins best actor at MMFF 2025 Gabi ng Parangal

Published Dec 28, 2025 12:25 pm  |  Updated Dec 28, 2025 02:04 pm
'I'mPerfect,' a movie about the challenges of persons with Down syndrome, made history after it won best picture at the 2025 Metro Manila Film Festival Gabi ng Parangal held in Makati City on Saturday night.
The lead stars of 'I'mPerfect' receive the award for Best Picture at the 51st Metro Manila Film Festival Gabi ng Parangal held at the Dusit Hotel in Makati City on Dec. 27. (Nathan Studios)
The lead stars of 'I'mPerfect' receive the award for Best Picture at the 51st Metro Manila Film Festival Gabi ng Parangal held at the Dusit Hotel in Makati City on Dec. 27. (Nathan Studios)
"Persons with Down syndrome. Persons with disabilities. You made history tonight. Para sa inyong lahat ito (This is for all of you)," said Sylvia Sanchez, of Nathan Studios, producer of the movie, as she accepted the trophy.
This is the first time a Filipino movie has featured lead actors with real disabilities, specifically those with Down syndrome.
Newcomer Krystel Go, a person with Down syndrome, surprised movie fans when she won Best Actress for "I'mPerfect," beating early favorites Angelica Panganiban, Nadine Lustre, and Bianca De Vera. It also won Best Ensemble, a new category at this year's film festival.
Krystel Go reads her acceptance speech after she won Best Actress for 'I'mPerfect.' (Nathan Studios)
Krystel Go reads her acceptance speech after she won Best Actress for 'I'mPerfect.' (Nathan Studios)
"Hindi po ako makapaniwala na nanalo ako. (I can't believe I won)," said Krystel, becoming emotional as she accepted the award.
Unkabogable Sta Vice Ganda won best actor for "Call Me Mother," a comedy-drama about an overseas Filipino worker.
"Hindi ko alam kung ano ang sasabihin ko because I don't usually prepare my speeches. I don't expect. Mas ineexpect ko na hindi ako mananalo. Salamat po at nakita ninyo ako. Salamat po at kinilala nyo po ako. It is really 2025, and it is really possible. It is real. Queer people can be Best Actor. A queer person in a gown can win Best Actor. It's about time. (I don't know what to say because I don't usually prepare my speeches. I don't expect it. I expect I won't win. Thank you for seeing me. Thank you for recognizing me. It is really 2025, and it is really possible. It is real. Queer people can be Best Actor. A queer person in a gown can win Best Actor. It's about time)," Vice Ganda said in his acceptance speech.
Vice Ganda delivers his speech after he won Best Actor for 'Call Me Mother.' (MMFF)
Vice Ganda delivers his speech after he won Best Actor for 'Call Me Mother.' (MMFF)
Other awards for "Call Me Mother" were Best Child Performer (Lucas Andalio), the Gender Sensitivity Award, and 3rd Best Picture.
But the movie with the most awards was "Manila's Finest," which went home with eight trophies: 3rd Best Picture, Best Cinematography, Best Original Theme Song, Best Sound, Best Musical Score, Best Production Design, Best Float, and the Gatpuno Antonio J. Villegas Cultural Award.
"UnMarry," a film that deals with annulment, won seven awards: 2nd Best Picture, Best Director (Jeffrey Jeturian), Best Supporting Actor (Tom Rodriguez), Breakthrough Performance (Zack Sibug), Best Screenplay, Best Editing, and Best Float.
Actress Angelica Panganiban gives her acceptance speech after the movie 'UnMarry' was named 2nd Best Picture. (MMF)
Actress Angelica Panganiban gives her acceptance speech after the movie 'UnMarry' was named 2nd Best Picture. (MMF)
"Bar Boys: After School" received two awards: Best Supporting Actress (Odette Khan) and the FPJ Memorial Award. "Shake, Rattle, and Roll: Evil Origins" won Best Visual Effects.
MMFF entries "Rekonek" and "Love You So Bad" were nominated in various categories but did not win any awards.
With the winners already announced, expect some of the movies to add to their box-office earnings. The MMFF will run from Dec. 25, 2025, to an. 14, 2026. The full list of winners:
Best Picture - I'mPerfect
2nd Best Picture - UnMarry
3rd Best Picture - Manila's Finest and Call Me Mother
Best Director - Jeffrey Jeturian/UnMarry
Best Actor - Vice Ganda/Call Me Mother
Best Actress - Krystel Go/I'mPerfect
Best Ensemble Award - I'mPerfect
Gatpuno Antonio J. Villegas Cultural Award - Manila's Finest
FPJ Memorial Award - Bar Boys: After School
Breakthrough Performance - Zack Sibug/UnMarry
Best Screenplay - UnMarry
Best Supporting Actor - Tom Rodriguez/UnMarry
Best Supporting Actress - Odette Khan/Bar Boys: After School
Best Child Performer - Lucas Andalio/Call Me Mother
Best Cinematography - Manila's Finest
Best Original Theme Song - Manila's Finest
Best Sound - Manila's Finest
Best Musical Score - Manila's Finest
Best Editing - UnMarry
Best Production Design - Manila's Finest
Best Visual Effects - Shake, Rattle, and Roll: Evil Origins
Montesa Star of the Night (Male) - Will Ashley and Dustin Yu
Montesa Star of the Night (Female) - Bianca De Vera
Gender Sensitivity Award - Call Me Mother
Best Float - Manila's Finest and UnMarry
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.