It's a bug in EE's native Search module. Bug reported here: https://support.ellislab.com/bugs/detail/19828

Here's the fix:

Starting in line 1290 of system/expressionengine/modules/search/mod.search.php

REPLACE

    if ($query->num_rows() == 0 OR $query->row('total_results')  == 0)
    {
      return ee()->output->show_user_error('off', array(lang('search_no_result')), lang('search_result_heading'));
    }

WITH

    if ($query->num_rows() == 0 OR $query->row('total_results')  == 0)
    {			
      if ($query->row('no_result_page') == "")
      {
        return ee()->output->show_user_error('off', array(lang('search_no_result')), lang('search_result_heading'));
      }
      else
      {
        return;
      }
    }