Make stuffing: Heat oil in heavy large skillet over medium heat. Add onions, garlic and thyme; sauté until onions soften, about 5 minutes. Cool 15 minutes. Mix in spinach and matzo. Season stuffing with salt and pepper. Mix in egg.
Make brisket: Preheat oven to 350°F. Cut deep pocket in 1 side of brisket, leaving 3/4-inch border of meat uncut on remaining 3 sides. Fill pocket with stuffing. Skewer or sew pocket closed. Sprinkle salt and pepper all over brisket.
Arrange half of onions in bottom of large roasting pan. Place brisket, fat side up, on onions. Top brisket with remaining onions. Pour 1/4 cup broth into pan. Bake brisket uncovered until meat and onions begin to brown, about 1 hour.
Add carrots, celery, garlic, thyme and bay leaf to pan around brisket. Pour remaining 2 cups broth over. Cover pan with foil. Reduce temperature to 300°F. Bake brisket until tender, about 2 1/2 hours longer. Remove from oven. Uncover pan; let brisket stand 30 minutes. Thinly slice brisket across grain. Overlap slices on platter. Surround with vegetables from pan. Spoon off fat from pan juices; season juices with salt and pepper. Serve brisket with pan juices.