Alessandro Del Piero's 80th-minute header gave Juventus a 1-0 victory over Belgian side Club Bruge to clinch their place in the knockout stage from the same group.
Sebastian Deisler drilled a shot past Helge Payer in the 21st minute after being teed up by Makaay to give Bayern the lead.
Iranian international Ali Karimi, playing in the absence of the injured Michael Ballack, made it 2-0 nine minutes after the break.
Makaay took over, finishing off a swift counter-attack in the 72nd minute and adding his second four minutes later.
Coach Felix Magath must have been pleased to see Karimi making the most of a chance in the starting line-up.
"There were a lot of positives for us tonight," Magath said. "We scored an early goal and then increased the tempo.
"Makaay was back playing well, Deisler and Karimi were also great. With luck we might easily have scored even more goals."
Makaay scooted a free kick wide from a good position in the 11th minute after Ze Roberto had been pulled down and the chances came regularly for Bayern thereafter.
Makaay volleyed over form a narrow angle on the left when he might have pulled the ball back but the Dutchman atoned five minutes later with his astute pass setting up Deisler's emphatic opener from outside the box.
Ze Roberto, who went into the game nursing an injury, was replaced by Bastian Schweinsteiger at halftime and the German international created the first good chance of the second half, wriggling clear on the left and seeing a shot deflected wide.
From the resulting corner, Karimi rocked back and fired the ball past Payer.
Schweinsteiger launched a swift break from inside his own half and his weighted through ball picked out Makaay for the third.
The Dutch international got his second after another counter-attack. This time the outstanding Karimi supplied the pass and Makaay dragged the ball out left before slotting in.
Andreas Ivanschitz should have pulled one back for Rapid but his shot from the edge of the box drifted over in the 80th minute.
"Bayern were superb," said Rapid coach Josef Hickersberger. "We were beaten by the better side. We just weren't good enough."