Barcelona will face seven-time winner AC Milan in the Champions League for the third straight season, while Bayern Munich begins the defence of their title in a group containing Manchester City.
Arsenal are in one of the toughest groups alongside Borussia Dortmund, Marseille and Napoli. Dortmund, last year's runners-up, will be looking for revenge after finishing bottom of a group which included Arsenal and Marseille two years ago.
Thursday's draw in Monaco put Barcelona in Group H with Milan, Ajax and Celtic -- four teams who have been European champions 16 times between them.
Barcelona and Milan were grouped together in 2011-12 and then met in the quarter-finals, before facing each other in the round of 16 last season. Barcelona won three of the six encounters and drew two of them.
"You never get easy groups in the Champions League," Barcelona forward Lionel Messi said. "Of course we know Milan well and we also played Celtic last season, while Ajax have a lot of European history. So we're looking forward to some very tough, very exciting, very beautiful games."
Asked whether they can do better this season than last year, when crashing out embarrassingly 0-7 on aggregate in the semi-finals to Bayern Munich, the Argentine sounded confident.
"Bayern were superb last season and better than Barcelona," Messi said. “But hopefully this season we can do better. When you play for a club like Barcelona, the only option is to try and win it all."
Celtic claimed a shock 2-1 victory over Barcelona in last year's group stage.
"I think it's the best and the worst draw we could have got," Celtic manager Neil Lennon said. "In terms of glamor, it doesn't come any better but it's the most difficult we could have got."
Bayern, who beat Dortmund 2-1 in last year's final at Wembley, are in Group D along with City, CSKA Moscow and Viktoria Plzen.
"CSKA Moscow and Manchester City, in particular, should not be underestimated," Bayern chairman Karl-Heinz Rummenigge said. "It won't be a stroll for any (German) club, not for Bayern Munich either."
City captain Vincent Kompany recognised the task that lies ahead.
Real Madrid will face Juventus in another blockbuster pairing, with Galatasaray and Copenhagen joining them in Group B. Madrid are bidding for a record 10th title and lost to Dortmund in the semifinal last season, while Juventus, who lost to Bayern in the quarter-finals, have gone from strength to strength under Antonio Conte and won a second straight league title last campaign.
"Real are one of the favorites for the trophy and are also one of Juventus' historic European rivals," Conte said. "Taking on such a prestigious side will be a great motivation for us. Galatasaray are a team to be feared, they possess considerable qualities and can count on a red-hot atmosphere for their home games."
Juventus travel to Madrid on Oct. 23, before hosting the Spanish side on Nov. 5. Madrid begins their campaign at Galatasaray, who it beat 5-3 on aggregate in the quarter-finals last season.
New Manchester United manager David Moyes will get his first taste of the Champions League group stage after taking over from Alex Ferguson this summer, and the Premier League champions have been put in Group A along with Shakhtar Donetsk, Bayer Leverkusen and Real Sociedad.
Chelsea won the Champions League in 2012 but went out at the group stage last year before going on to capture the Europa League. Now managed again by Jose Mourinho and back in Europe's top competition, the team should fare better in a group consisting of Schalke, Basel and Steaua Bucharest.
Group C is made up of Benfica, big-spending Paris Saint-Germain, Olympiakos and Anderlecht, while FC Porto, Atletico Madrid, Zenit St. Petersburg and Austria Vienna are in Group H.
The first group games will take place on Sept. 17 and 18.
Group A: Man United, Shakhtar Donetsk, Bayer Leverkusen, Real Sociedad
Group B: Real Madrid, Juventus, Galatasaray, FC Copenhagen
Group C: Benfica, PSG, Olympiakos, Anderlecht
Group D: Bayern Munich, CSKA Moscow, Man City, Viktoria Plzen
Group E: Chelsea, Schalke, FC Basel, Steaua Bucharest
Group F: Arsenal, Marseille, Borussia Dortmund, Napoli
Group G: FC Porto, Atletico Madrid, Zenit St Petersburg, Austria Vienna
Group H: Barcelona, AC Milan, Ajax, Celtic