The Bavarians warmed up to their Champions League last-16 clash with Arsenal in convincing style as the Swiss netted twice to give Guardiola something to think about
Dante headed the hosts in front in the 19th minute at the Allianz Arena before Shaqiri netted his first of the game 15 minutes later.
And the result was beyond doubt before the break as the Swiss drove home a third from the centre of the penalty area and staked his claim for a starting spot in Wednesday's Champions League last-16 clash with Arsenal.
Claudio Pizarro then added a fourth in the dying moments as Freiburg sank without trace.
The victory is Bayern's 13th in a row in the Bundesliga and stretches their record unbeaten top-flight streak to 46 matches.
Bayern coach Pep Guardiola opted to rest a number of players ahead of the midweek trip to the Emirates Stadium, with Bastian Schweinsteiger named among the substitutes as he neared a long-awaited Bundesliga return following his ankle injury.
After soaking up some early Freiburg pressure, Bayern went close with two long-range efforts from Shaqiri and Rafinha.
A free kick on the edge of the penalty area presented the visitors with an opportunity to test home goalkeeper Manuel Neuer in the 14th minute, but Jonathan Schmid's effort struck the top of the wall before Matthias Ginter saw a strike blocked by Toni Kroos.
However, it was Guardiola's side who took the lead five minutes later, when Dante got his head to a Diego Contento cross from the left to guide the ball just beyond the reach of Oliver Baumann and into the bottom right-hand corner of the net.
Having looked like making it an uncomfortable 90 minutes for Bayern in the early stages, the opening goal seemed to knock the stuffing out of Freiburg, and the champions doubled their advantage in the 34th minute.
Shaqiri benefitted from a delightful Pizarro flick and capped off a flowing team move before the winger put the result beyond doubt by making it 3-0 with a low drive from 12 yards shortly after.
Admir Mehmedi thought he had pulled one back for the visitors on the stroke of half-time, but his effort was ruled out for offside.
Bayern took their foot off the gas somewhat after the break, but could have found themselves even further ahead as Arjen Robben and Thomas Muller both went close.
Diego Contento headed over from close range just after the hour mark, before Kroos nearly found the top right-hand corner with a well struck effort.
Freiburg had offered little in the way of goal-scoring opportunities in the second half, but almost reduced the deficit when Sebastian Kerk had Neuer beaten. However, he saw his effort creep wide of the target.
Javi Martinez had the chance to put the icing on the cake for Bayern in the closing stages, but side-footed his effort wide of the right-hand upright.
However, Pizarro got in on the act two minutes from time as he cut inside from the left and fired home from the edge of the area.
And encouragingly for Bayern fans, the returning Schweinsteiger was given a 30-minute run out by Guardiola, coming on in place of two-goal hero Shaqiri.