The Cubs scored eight times over the first three innings to spoil the Cardinals' home opener.
The first two Chicago batters reached base to open the first against Adam Wainwright (0-2) before Starlin Castro delivered an RBI single and Stewart homered to right. Castro went 3-for-4 with an RBI and scored twice.
LeHair homered on the first pitch from Wainwright after the St. Louis starter had loaded the bases on two walks and a single.
Jeff Samardzija (2-0) lasted five innings to get the win, giving up five runs on 10 hits with five strikeouts.
Matt Carpenter had two RBI for St. Louis, which has lost two straight.
Wainwright gave up eight runs on seven hits in three innings. It was his first home start since September, 2010.
The game was delayed by rain at the start for 1 hour, 44 minutes.