Sagan's victory was his 12th stage success in the race, setting a new record.
The Slovak benefitted from a split in the peloton 500 metres from the line at the end of the 187.6km stage around Baar to win the sprint.
But that split cost home hero Fabian Cancellara – who won Saturday's opening prologue – the leader's jersey as he was caught the wrong side and came home three seconds back.
Roelandts, who was second to Cancellara on Saturday, finished in Sagan's group and took the yellow jersey by a single second.
Australian Luke Durbridge remains third overall, as he was after the prologue, at 6sec with Sagan fourth at 10sec.
Argentine Maximiliano Richeze was second to Sagan on the stage with Australian Michael Matthews third.
Reigning champion Simon Spilak of Slovenia is 55th overall at 35sec but Welshman Geraint Thomas, who will assist Sky team leader Chris Froome at next month's Tour de France, is 17th at 16sec.
Having already won Paris-Nice and the Tour of the Algarve this season,Thomas is expected to challenge for the overall victory, alongside American Tejay Van Garderen, currently 47th at 32sec.
Monday's third stage is a 192km trek over rolling terrain from Grosswangen to Rheinfelden.