Neil Lennon's side, who face a Champions League qualifying clash against Cliftonville on July 17, suffered their fourth defeat of their pre-season schedule
An 11th-minute goal from Simon Terodde ensured the hosts went in at the break with the advantage, while Soren Brandy struck soon after the restart.
The scoring was completed with three minutes of normal time remaining when Damir Kreilach nodded home.
Having seen his side lose fixtures against FC Sevastopol, CFR Cluj and Greuther Furth, Neil Lennon named a strong team in preparation for his side's upcoming Champions League qualifying clash with Cliftonville on July 17.
Celtic were given a scare just three minutes in, as Patrick Kohlmann brought a fine fingertip save from Fraser Forster.
The Scottish champions did not heed the warning, however, and Forster was soon picking the ball out his net after Terodde stole in to score.
Celtic held firm to see themselves in at half time just one behind, but it took just 10 minutes for Brandy to elude the Celtic defence to put the hosts two ahead.
Union Berlin had the ball in the net again soon after, only to be denied by the assistant referee's flag, but they would eventually get their rewards for a fine performance with time ticking away.
The 2. Bundesliga side hit the post at the first attempt, but Kreilach produced a fine header at the back post in the aftermath to grab his side's third.