The home side created the better opportunities throughout at the Arena Petrol in Celje and deservedly claimed the win through Bira's effort after 52 minutes.
Canada have now suffered four straight defeats, while their winless run extends to 14 matches, a barren spell that stretches back to October 2012.
Roman Bezjak rattled the crossbar in the first half and Birsa also went close with a half-volley.
But Slovenia got their just rewards shortly after the break through Birsa's low drive.
A lively start by the visitors almost led to the opening goal when Dwayne De Rosario's shot from the edge of the area almost found its way into the top left-hand corner, but Jan Oblak stretched to tip the ball wide.
Slovenia dominated after the early scare and came closest to breaking the deadlock on 20 minutes when Bezjak's fierce 25-yard effort cannoned back off the crossbar.
Canada were allowing the hosts too much time on the ball and were again almost punished on the half-hour mark as Birsa's long-range effort flashed narrowly wide of the post.
Birsa had a penalty claim turned away after going to ground under a challenge from Nik Ledgerwood and the forward was further frustrated on the stroke of half-time when he showed good technique with a half-volley that was parried clear by Kyriakos Stamatopoulos.
However, the Milan forward would not be denied for long and he found the breakthrough in the 52nd minute.
After receiving the ball in midfield, Birsa drove forward and dragged a left-foot effort across goal from outside the area that found the far corner. Stamatopoulos will feel he could have done better with the effort.
Slovenia could have had a second when Jasmin Kurtic's free-kick stung the palms of Stamatopoulos, but Srecko Katanec's men had to settle for 1-0.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.