Abdul-Rahman Al-Qahtani, who has recently joined Ittihad Jeddah from Al-Ettifaq on a one-year loan deal, put the Saudis ahead in the 27th minute.
Midfielder Taysir Al-Jassem doubled the lead seven minutes later before being sent-off four minutes after re-start. Singapore scored a consolation three minutes before the final whistle.
Elsewhere, in another Asian Cup warm-up, Bahrain drew 2-2 with UAE.
Sayed Galal grabbed the lead for Bahrain after 11 minutes but was cancelled out by Youssef Jaber's strike ten minutes before the interval.
Mohamed Saied Al-Sheehi put UAE in front in the 49th minute but Bahrain's Nigerian-born Jessy John leveled the score two minutes from time.
The Asian Cup, which will kick-off on the seventh of July, is co-hosted by Malaysia, Indonesia, Vietnam and Thailand.